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

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

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



답변

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

문맥 + 동사 + 방법

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

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


답변

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

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

답변

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

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

귀하의 경우 클래스 가 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 함수 에서 클래스 이름과 동일한 이름을 사용하는 데주의를 기울이면 사용한 이름을 기억하기가 훨씬 쉽습니다. 물론이 패턴은 모든 것이 작동하지는 않지만 “기능적”이라고 생각할 수있는 코드를 작성하는 경우에는 작동합니다.


답변

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


답변

실 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 (…)이 없습니다.


답변

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

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


답변

Steve Mcconnell의 Code Complete 라는 책 에는 변수 / 클래스 / 함수 / 이름 지정에 대한 장이 있습니다.