다른 사람이 프로그래밍에서 가장 어려운 부분 중 하나 인 명명 클래스와 메소드를 찾으십니까? [닫은]


275

그래서 저는 웹 서비스를 통해 공급 업체에 도움 문서를 요청 해야하는이 클래스에서 일하고 있습니다. 내가 이름을하려고 DocumentRetriever, VendorDocRequester, DocGetter,하지만 그들은 바로 소리를하지 않습니다. 나는 적절한 단어를 찾으려고 30 분 동안 dictionary.com 을 통해 찾아 보았다 .

나쁜 이름으로 프로그래밍을 시작하는 것은 아침에 아주 나쁜 머리카락을 가진 것과 같으며, 나머지는 거기서 내리막 길을갑니다. 내 기분?


2
분명히 기능 만 필요할 때 왜 수업을 원하십니까? 클래스 이름 문제로 동사에 대한 steve-yegge.blogspot.com/2006/03/… 을 확인하십시오 .
user51568

또는 무엇을 호출해야하는지 알 때 앞으로 이동하여 리팩토링하십시오.
Esteban Araya

16
명명 : 무엇 : 메소드 : get, set, save 등과 같은 동사 사용 클래스변수 : 문서, 사용자, 컨텍스트 등과 같은 명사 사용 인터페이스 : 인쇄 가능, 복제 가능, 반복 가능 등과 같은 형용사 사용 이 스레드를 읽은 후 클래스와 변수에 대한 Spolsky의 제안 (명사 사용)과 TravisO의 메소드에 대한 제안 (동사 사용)이 마음에 듭니다 . 또한 'er'로 끝나는 객체를 만들지 마십시오 .
Daniel Gasull

5
"컴퓨터 과학에는 캐시 무효화, 명명 규칙 및 자동 오버 플로라는 두 가지 어려운 문제가 있습니다."
Karakuri

6
@karakuri 내가 들었던 버전은 "컴퓨터 과학에는 두 가지 어려운 문제가있다 : 네이밍과 1 개의 에러로 상쇄된다 "는 것이다.
Haoest

답변:


121

지금하고있는 일은 괜찮습니다. 현재 구문을 고수하는 것이 좋습니다.

문맥 + 동사 + 방법

이 방법을 사용하여 함수 / 메서드, SQL 저장 프로 시저 등의 이름을 지정합니다.이 구문을 유지하면 Intellisense / Code Panes가 훨씬 깔끔하게 유지됩니다. 따라서 EmployeeGetByID () EmployeeAdd (), EmployeeDeleteByID ()가 필요합니다. GetEmployee (), AddEmployee ()와 같이 문법적으로 올바른 구문을 사용하면 관련이없는 것과 같은 클래스에 여러 개의 Get이 그룹화되어 있으면 이것이 지저분해질 것입니다.

나는 날짜가있는 파일의 이름을 지정하는 것과 비슷합니다 .2009-01-07.log가 아니라 1-7-2009.log가 아니라고 말하면 순서가 완전히 쓸모 없게되기 때문입니다.


28
메서드 이름을 지정할 때 형식 이름에서 컨텍스트를 유추하는 것을 선호합니다 ... class EmployeeRepository {void Add (Employee employee); void Get (int id); void GetAll (); 무효 GetAll (Action <FilterCriteria> 필터); } 어떻게 생각해?
Vyas Bharghava가

5
"집"동사의 표준 목록이있는 경우에도 도움이됩니다. 따라서 항상로드 / 읽기 / 검색 / 선택 / 찾기 등이 아닙니다.
데드 계정

2
Richard 당신은 OOP 시나리오에서 정확합니다. 제 대답은 조금 철회되었고 일반적인 코딩 제안에 더 가깝습니다. 기술적으로는 OOP 이외의 언어에 더 많이 적용됩니다. Employee.Add () 및 Employee.GetByID ()가 OOP에서 가장 잘 사용됩니다.
TravisO

6
나는 당신의 제안의 Intellisense 효과를 좋아하지만 조금 더 글을 쓰는 접근법을 선호합니다. 천연 영어와 같은 (더 읽기 때문에 나는) Employee.SupervisorSet 이상 Employee.SetSupervisor ()을 (원합니다 그래서.
마태 복음 Maravillas

12
그러나 @TravisO는 영어로 좋지 않습니다. 당신은 직원을 얻지 못하고 직원을 얻습니다. 형용사와 관련하여보다 복잡한 행동을하는 경우 어떻게해야 InvalidateObsoleteQueries합니까? QueriesInvalidateObsolete읽기 어렵고 이해가되지 않습니다. 또한 C #, 특히 Resharper에서는 알파벳 순서가 중요하지 않습니다. 당신이 입력 "EMP"를 시작하면, ReSharper에서 당신을 줄 것이다 GetEmployee, SetEmployee심지어 PopulateInactiveEmployeesList.
Ilya Kogan

54

내가 배운 한 가지 교훈은 수업의 이름을 찾을 수 없으면 거의 항상 해당 수업에 문제가 있다는 것입니다.

  • 당신은 필요하지 않습니다
  • 너무 많아

13
아니면 너무 적게합니다.
user51568

4
감사합니다. 이것은 실제로 나와 관련이 있습니다.
Haoest

52

적절한 명명 규칙은 주어진 변수, 클래스, 메소드 또는 함수에 사용할 수있는 이름의 수를 최소화해야합니다. 가능한 이름이 하나만 있으면 이름을 기억하는 데 어려움이 없습니다.

함수와 싱글턴 클래스의 경우 기본 함수가 한 종류의 것을 다른 종류의 것으로 변환하는 것인지 확인하기 위해 함수를 면밀히 조사합니다 . 나는 그 용어를 매우 느슨하게 사용하고 있지만, 당신이 작성하는 수많은 함수는 본질적으로 어떤 형태로 무언가를 취하고 다른 형태로 무언가를 생산한다는 것을 알게 될 것입니다.

귀하의 경우 클래스 가 Url을 문서로 변환 하는 것처럼 들립니다 . 그런 식으로 생각하는 것은 조금 이상하지만 완벽하게 맞습니다.이 패턴을 찾기 시작하면 어디서나 볼 수 있습니다.

이 패턴을 찾으면 항상 함수 이름을 x Fromy로 지정 합니다.

함수 가 URL을 문서로 변환 하므로 이름을 지정합니다.

DocumentFromUrl

이 패턴은 매우 일반적입니다. 예를 들면 다음과 같습니다.

atoi -> IntFromString
GetWindowWidth -> WidthInPixelsFromHwnd // or DxFromWnd if you like Hungarian
CreateProcess -> ProcessFromCommandLine

당신이 UrlToDocument그 순서에 더 편한 경우 에도 사용할 수 있습니다 . 당신이 말하는 여부 의 X From, Y 또는 y를 Tox는 아마 취향의 문제이지만, 내가 선호 From하는 방법은 함수 이름의 시작은 이미 당신을 알려주기 때문에 순서가 반환 무엇을 입력합니다.

하나의 규칙을 선택하고 준수하십시오. x Fromy 함수 에서 클래스 이름과 동일한 이름을 사용하는 데주의를 기울이면 사용한 이름을 기억하기가 훨씬 쉽습니다. 물론이 패턴은 모든 것이 작동하지는 않지만 "기능적"이라고 생각할 수있는 코드를 작성하는 경우에는 작동합니다.


OOP 언어에서 클래스 이름은 항상 명사 일 필요는 없지만 가끔 "verbish"인 것이 좋습니다. 그러므로 왜 OOP 실무자들이 종종 질문을하는 사람처럼 걸려 넘어지는 이유는 수업이 실제 세계에서 "일"이어야한다는 것을 너무 강조하기 때문입니다.
Ray

7
xFromY-Convetion은 기본적으로 리턴 유형 및 매개 변수 목록에있는 내용을 반복합니다. Foo fooFromBar (Bar bar). 이 일관성 또는 중복성을 호출하는 것은 당신에게 달려 있습니다.
Lena Schimmel

"귀하의 경우 클래스가 Url을 문서로 변환하는 것처럼 들립니다." 클래스가 개념을 나타내는 대신에 언제 "일을"해야 하는가?
user51568

6
@ 브라이언 : 선언에서 한곳에서만 중복됩니다. 다른 곳에서 사용하면 데이터 유형에 대해 약간의 알림을받는 것이 좋습니다. 선언으로 돌아 가지 않고도 코드를 더 읽기 쉽게 만듭니다.
Joel Spolsky

3
@ stefan- C # 및 Java와 같은 일부 언어에서는 모든 코드를 C ++과 달리 클래스로 캡슐화해야합니다. 모듈 식 코드를 원한다면 함수는 그 언어에서 일류 시민이 아닙니다. 따라서 때로는 함수와 같은 것을 "할 수있는"클래스가 생길 수 있습니다.
Ray

31

때로는 클래스 나 메소드의 이름이 좋지 않을 때 우리 모두에게 발생합니다. 그러나 종종 이름을 제시하지 못하면 디자인에 문제가있는 것일 수 있습니다. 분석법에 너무 많은 책임이 있습니까? 수업은 일관된 아이디어를 캡슐화합니까?


3
정말 좋은 지적입니다.
Camilo Martin

27

실 1 :

function programming_job(){
    while (i make classes){
         Give each class a name quickly; always fairly long and descriptive.
         Implement and test each class to see what they really are. 
         while (not satisfied){
            Re-visit each class and make small adjustments 
         }
    }
}

실 2 :

while(true){
      if (any code smells bad){
           rework, rename until at least somewhat better
      }
}

여기에는 Thread.sleep (...)이 없습니다.


24

프로그래밍 할 때 이름을 붙일 수있는 이름에 대해 많은 시간을 할애하고 있습니다. 나는 그것이 아주 잘 지불한다고 말하고 싶다. 때때로 내가 붙어있을 때 나는 잠시 동안 그것을 떠나 커피 휴식 시간 동안 누군가가 좋은 제안이 있는지 조금 물어보십시오.

당신의 수업에 대해 제안 VendorHelpDocRequester합니다.


1
> VendorHelpDocRequester 좋습니다. 실제로 Requester가 아닌 Requestor를 googled했습니다. 둘 다 합법적 인 영어 단어 인 것 같습니다.
Haoest

1
나는 그것을 한두 번 수행했다 :)
willcodejavaforfood

1
수업 이름에 동사가 있으면 항상 잘못 들립니다. 또한 항상 사용법이 중복됩니다 (예 :) VendorHelpDocRequester.request(). `VendorHelpDocs.request () '와 같은 복수형을 선호합니다
Edson Medina


15

나는 이것이 부작용이라고 생각합니다.

어려운 실제 이름이 아닙니다. 어려운 것은 이름을 짓는 과정에서 당신이 무엇을하고 있는지 전혀 모른다는 끔찍한 사실에 직면한다는 것입니다.


12

나는 어제 37Signals 의 Signal vs. Noise 블로그를 통해이 인용문을 들었 습니다.

"컴퓨터 과학에는 캐시 무효화와 이름 지정이라는 두 가지 어려운 점이 있습니다." — 필 칼튼


simonwillison.net/2007/Jul/5/hard 는 나를 tbray.org/ongoing/When/200x/2005/12/23/UPI 로 안내하여 karlton.hamilton.comkarlton.hamilton.com/quotes안내했습니다. /showallquotes.cgi 에는 인용 부호가 포함되지 않습니다! (그러나 나는 스크럼에서 # 5를 인정합니다.)
Daryl Spitzer

1
"컴퓨터 과학의 두 가지 어려운 점 : 캐시 무효화, 이름 지정 및 일대일 오류."
Dan Lugg

7

어려운 것이 좋습니다. 문제와 클래스가 실제로해야 할 일에 대해 생각하도록 강요합니다. 좋은 이름은 좋은 디자인으로 이어질 수 있습니다.


6

동의했다. 나는 타입 이름과 변수를 너무 끔찍하게 길지 않고 가능한 한 서술 적으로 유지하고 싶지만 때로는 좋은 단어를 찾을 수없는 특정 개념이 있습니다.

이 경우에는 항상 동료에게 입력을 요청하는 데 도움이됩니다. 궁극적으로 도움이되지 않더라도 적어도 설명을 크게하고 바퀴를 돌리도록 도와줍니다.


6

나는 지난 달에 명명 규칙에 글을 쓰고 있었다 : http://caseysoftware.com/blog/useful-naming-conventions

그것의 요지 :

verbAdjectiveNounStructure- 선택적 부품으로 구조 및 형용사 포함

들어 동사 , 나는 액션 동사에 충실 : 통보, 삭제, 저장, 업데이트 또는 생성합니다. 가끔은 "프로세스"를 사용하지만 대기열 또는 작업 백 로그를 구체적으로 참조하기 위해서만 사용합니다.

들어 명사 , 나는 클래스를 사용하거나 상호 작용되는 객체입니다. web2project에서 이것은 종종 작업 또는 프로젝트입니다. 페이지와 상호 작용하는 Javascript 인 경우 본문 또는 테이블 일 수 있습니다. 요점은 코드가 상호 작용하는 객체를 명확하게 설명한다는 것입니다.

구조 는 상황에 고유 때문에 선택 사항입니다. 목록 화면에서 목록 또는 배열을 요청할 수 있습니다. web2project의 프로젝트 목록에서 사용되는 핵심 기능 중 하나는 단순히 getProjectList입니다. 기본 데이터를 수정하지 않고 데이터 표현 만 수정합니다.

형용사는 완전히 다른 무언가이다. 명사에 대한 수정 자로 사용됩니다. getOpenProjects와 같이 간단한 것은 getProjects 및 switch 매개 변수를 사용하여 쉽게 구현할 수 있지만, 기본 데이터 및 / 또는 객체의 구조에 대해 약간의 이해가 필요한 메소드를 생성하는 경향이 있습니다. 북돋우다. 보다 명시적이고 구체적인 함수를 사용하면 구현을 코드에서 완전히 감싸서 숨길 수 있습니다. OO의 요점이 아닌가?


4

클래스의 이름을 지정하는 것 외에도 적절한 패키지 구조를 만드는 것은 어렵지만 보람있는 도전이 될 수 있습니다. 모듈의 문제와 모듈이 응용 프로그램의 비전과 어떻게 관련되어 있는지 분리해야합니다.

지금 앱의 레이아웃을 고려하십시오.

    • VendorDocRequester (웹 서비스에서 읽고 데이터 제공)
    • VendorDocViewer (요청자를 사용하여 공급 업체 문서 제공)

나는 몇 수업 안에 많은 일들이 진행되고 있다고 추측하려고 노력했다. 이것을 MVC 기반 접근 방식으로 리팩토링하고 소규모 클래스가 개별 업무를 처리하도록 허용하면 다음과 같은 결과가 발생할 수 있습니다.

    • VendorDocs
      • 모델
        • 문서 (데이터를 보유한 일반 객체)
        • WebServiceConsumer (웹 서비스에있어 뻔뻔스러운 거래)
      • 제어 장치
        • DatabaseAdapter (ORM 또는 기타 방법을 사용한 핸들 지속성)
        • WebServiceAdapter (Consumer를 활용하여 문서를 가져 와서 데이터베이스에 고정)
      • 전망
        • HelpViewer (DBAdapter를 사용하여 문서를 추출)

그런 다음 클래스 이름은 네임 스페이스를 사용하여 전체 컨텍스트를 제공합니다. 클래스 자체는 명시 적으로 말할 필요없이 응용 프로그램과 본질적으로 관련 될 수 있습니다. 결과적으로 클래스 이름이 더 간단하고 쉽게 정의 할 수 있습니다!

또 다른 중요한 제안 : 자신에게 유리한 입장을 취하고 Head First Design Patterns 사본을 선택하십시오. 응용 프로그램을 구성하고 더 나은 코드를 작성하는 데 도움이되는 환상적이고 읽기 쉬운 책입니다. 디자인 패턴을 이해하면 발생하는 많은 문제가 이미 해결되었으며 솔루션을 코드에 통합 할 수 있음을 이해하는 데 도움이됩니다.


4

레오 브로디 (Leo Brodie)는 자신의 저서 "Thinking Forth"에서 프로그래머에게 가장 어려운 과제는 이름을 잘 짓는 것이 었으며 가장 중요한 프로그래밍 도구는 동의어 사전이라고 언급했습니다.

http://thesaurus.reference.com/ 에서 동의어 사전을 사용해보십시오. .

그 외에도 헝가리어 표기법을 사용하지 말고 약어를 피하고 일관성을 유지하십시오.

최고의 소원.


1
Caled 시스템 헝가리어를 사용해서는 안된다는 점에 유의하여 +1하십시오. app hungarian은 특히 타이핑 시스템이없는 프로그래밍 언어에서 도움이 될 수 있습니다.
user51568

나는 시스템 대 응용 헝가리어 표기법에 대해 들어 본 적이 없지만 어떤 환경에서도 좋은 아이디어는 아닙니다. 항상 HOW가 아닌 WHAT를 기반으로 이름을 지정해야하며 헝가리어는 완전히 방법에 관한 것입니다.
Rob Williams

@RobWilliams 나는 그들이 Joel Spolsky의 기사를
Alois Mahdal

1
@RobWilliams 또한 "X vs Y에 대해 들어 본 적이 없지만 좋은 아이디어는 아닙니다 ..."에 대해 확신하십니까? ...? :)
Alois Mahdal 2016 년

4

한마디로 :
나는 좋은 이름이 중요하다는 데 동의하지만, 모든 비용으로 구현하기 전에 이름을 찾아야한다고 생각하지 않습니다.

물론 처음부터 좋은 이름을 갖는 것이 좋습니다. 그러나 2 분 안에 문제를 해결할 수 없다면 나중에 이름을 바꾸는 데 시간이 덜 걸리고 생산성 관점에서 올바른 선택입니다.

긴:
일반적으로 구현하기 전에 이름에 대해 너무 오래 생각할 가치가없는 경우가 많습니다. 클래스를 구현하면 이름을 "Foo"또는 "Dsnfdkgx"로 지정하고 구현하는 동안 클래스 이름을 지정해야합니다.

특히 Java + Eclipse를 사용하면 모든 클래스의 모든 참조를 신중하게 처리하고 이름 충돌 등을 경고하므로 이름을 바꾸는 것이 전혀 고통스럽지 않습니다. 클래스가 아직 버전 제어 저장소에 있지 않은 한 이름을 5 번 바꾸는 데 문제가 있다고 생각하지 마십시오.

기본적으로 리팩토링에 대해 어떻게 생각하는지에 대한 질문입니다. 개인적으로, 나는 팀원이 때때로 실행중인 시스템을 건드리지 않는다고 믿기 ​​때문에 팀 동료를 짜증나게하지만 그것을 좋아합니다 . 리팩토링 할 수있는 모든 것에서 이름 변경은 할 수있는 가장 해로운 일 중 하나입니다.


3

HelpDocumentServiceClient 종류의 한 입이나 HelpDocumentClient가 아닌 이유는 벤더가 중요하지 않다는 것입니다. 요점은 도움말 문서를 다루는 웹 서비스의 클라이언트입니다.

그리고 네 이름 지정은 어렵습니다.


3

해당 클래스에는 하나의 현명한 이름 만 있습니다.

HelpRequest

구현 세부 사항이 의미를 혼란스럽게하지 마십시오.


1 년 반 후, 나는 HelpLibrary수업 을 제안 하려고했지만 이것은 적어도 좋은 것입니다. 먼저 답변을 읽어야합니다!
Jeff Sternal

2

좋은 리팩토링 도구에 투자하십시오!


lol. 때로는 리팩토링이 최선의 선택이 아니지만 (큰 C ++ 프로젝트), 나는 확실히 전에 그것에 의지했습니다. 때때로 나는 단지 일을 끝내고 나중에 이름이 나에게 온다.
Steve S

2

나는 기본 사항을 고수합니다 : VerbNoun (인수). 예 : GetDoc (docID).

화려할 필요는 없습니다. 당신이든 다른 사람이든 지금부터 일년 후에는 이해하기 쉽습니다.


이것은 잘 읽히지 만 뒤로 있기 때문에 제대로 구성되지 않습니다. DocAdd () DocRemove () 등을 만들 때 모두 목록에 함께 표시되므로 DocGet ()을 사용하는 것이 좋습니다. 당신의 방법은 실제로 수십 개의 Gets 또는 기타가있을 때 얼마나 추한지 보여줍니다.
TravisO

훌륭한 제안, TravisO.
Jon Smock

나는 보통 수업에 동사를 사용하지 않을 것입니다.
willcodejavaforfood

2

나를 위해 메소드 또는 클래스 이름이 설명적이고 올바른 라이브러리에있는 길이는 중요하지 않습니다. API의 각 부분이 상주하는 위치를 기억해야 할 시대는 지났습니다.

Intelisense는 모든 주요 언어에 존재합니다. 따라서 타사 API를 사용할 때 '실제'문서를 사용하는 대신 문서에 인텔리전스를 사용하는 것을 좋아합니다.

이를 염두에두고 다음과 같은 메소드 이름을 작성하는 것이 좋습니다.

StevesPostOnMethodNames 긴 또는 짧은

길지만 그렇게. 요즘 누가 24 인치 화면을 사용하지 않습니까!


1

나는 이름이 예술이라는 것에 동의해야한다. 수업이 특정 "desigh 패턴"(공장 등)을 따르는 경우 조금 더 쉬워집니다.


1

이것이 코딩 표준을 갖추어야하는 이유 중 하나입니다. 표준을 갖는 것은 필요할 때 이름을 찾는 것을 돕는 경향이 있습니다. 그것은 당신의 마음이 다른 더 흥미로운 것들을 사용할 수 있도록 도와줍니다! (-:

가독성과 유지 관리 성을 돕기 위해 몇 가지 규칙을 따르는 Steve McConnell의 Code Complete ( Amazon 링크 ) 의 관련 장을 읽는 것이 좋습니다 .

HTH

건배,


1

아니, 디버깅은 나에게 가장 어려운 일이다! :-)


디버깅은 대개 올바른 질문을합니다. 이 숫자 게임은 1에서 1000까지의 숫자를 추측해야합니다. 추측이 너무 낮거나 높으면 콘솔에서 알려주고 시도는 10 회뿐입니다. 너 뭐하니?
Haoest

1

DocumentFetcher? 상황이 없으면 말하기가 어렵습니다.

당신이 갈 때 수학자처럼 행동하고 당신의 영역에 대한 사전을 빌리거나 발명하는 데 도움이 될 수 있습니다 . 매번 철자를 쓰지 않고 개념 을 제안 하는 짧은 평범한 단어를 정 하십시오. 너무 자주 나는 약어로 바뀌는 긴 라틴어 문구를 보았으므로 어쨌든 약어에 대한 사전이 필요 합니다 .


1

문제를 설명하는 데 사용하는 언어는 변수, 메서드, 개체, 클래스 등에 사용해야하는 언어입니다. 느슨하게도 명사는 개체와 동사를 일치시킵니다. 문제를 설명하는 단어가 누락 된 경우 문제에 대한 완전한 이해 (사양)가 누락 된 것입니다.

이름 세트 중 하나만 선택하는 경우 시스템을 구축하는 데 사용하는 규칙에 따라 이름을 지정해야합니다. 이전 관례에 의해 밝혀지지 않은 새로운 자리에 오 셨다면,이 새로운 사건을 다루기 위해 (적절하게, 일관되게) 확장하기 위해 항상 노력할 가치가 있습니다.

의심스러운 경우 잠을 자고 다음 날 아침 가장 분명한 이름을 선택하십시오 :-)

언젠가 깨어나서 잘못되었다는 것을 알게되면 즉시 바꾸십시오.

BTW : Document.fetch ()는 꽤 분명합니다.


1

지역 변수에서 가장 큰 어려움을 겪고 있습니다. 예를 들어 DocGetter 유형의 객체를 만들고 싶습니다. 그래서 그것이 DocGetter라는 것을 알고 있습니다. 다른 이름을 지정해야하는 이유는 무엇입니까? 나는 보통 dg (DocGetter의 경우) 또는 temp 또는 같은 것이 아닌 다른 이름을 부여합니다.


1

GoF 패턴뿐만 아니라 디자인 패턴도 공통 어휘를 제공하는 좋은 방법이며, 상황에 맞을 때마다 이름을 사용해야합니다. 이는 명명법에 익숙한 신규 이민자들이 아키텍처를 빠르게 이해하는 데 도움이 될 것입니다. 이 클래스는 프록시 또는 Façade처럼 행동해야합니까?


1

공급 업체 문서가 대상이 아니어야합니까? 내 말은, 프로그램의 일부에 대한 의인화 만이 아니라 유형적이라는 것을 의미합니다. 따라서 VendorDocumentation정보를 가져 오는 생성자 가있는 클래스가 있을 수 있습니다 . 클래스 이름에 동사가 포함되어 있으면 종종 무언가 잘못되었다고 생각합니다.


1

확실히 당신을 느낍니다. 그리고 나는 당신의 고통을 느낍니다. 내가 생각하는 모든 이름은 나에게 쓰레기처럼 보입니다. 그것은 매우 일반적인 것처럼 보이며 결국 내 이름에 약간의 감각과 창의성을 주입하여 그들이 묘사하는 것을 실제로 반영하는 방법을 배우고 싶습니다.

내가 가진 제안 중 하나는 동의어 사전을 참조하는 것입니다. Mac OS X와 ​​마찬가지로 Word에는 좋은 것이 있습니다. 그렇게하면 구름에서 머리를 내밀고 영감을주는 좋은 출발점이됩니다.


0

이름이 평신도 프로그래머에게 설명된다면 이름을 바꿀 필요가 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.