메소드 및 함수 이름의 "A", "an"및 "the": 무엇을 가져가십니까? [닫은]


16

우리 중 많은 사람들이 한 지점에서 이와 같은 메소드 이름을 보았을 것입니다.

  • UploadTheFileToTheServerPlease
  • CreateATemporaryFile
  • WriteTheRecordToTheDatabase
  • ResetTheSystemClock

즉, 문법적으로 올바른 영어 문장 인 메서드 이름이며 순전히 산문처럼 읽을 수 있도록 여분의 단어를 포함합니다. 개인적으로 저는 그러한 "문자 적"분석법 이름을 좋아하지 않으며 가능한 한 명확하면서 간결한 것을 선호합니다. 나에게 "a", "an"및 "the"와 같은 단어는 메소드 이름에서 어색한 것처럼 보이며 실제로 유용한 것을 추가하지 않고 메소드 이름을 불필요하게 길게 만듭니다. 이전 예제에 다음 메소드 이름을 선호합니다.

  • UploadFileToServer
  • CreateTemporaryFile
  • WriteOutRecord
  • ResetSystemClock

내 경험상 이것은 더 긴 이름을 쓰는 다른 접근 방식보다 훨씬 흔하지 만 두 가지 스타일을 모두 보았고 다른 두 사람의 생각이이 두 가지 접근 방식에 대해 궁금했습니다.

그래서, "산문처럼 읽히는 방법 이름"캠프 또는 "내가 무슨 뜻인지 말하지만 나쁜 외국어-영어 번역처럼 큰 소리로 읽는 방법 이름"캠프에 있습니까?


7
나는 이름이 같은 메소드를 본 적이 없다 WriteTheRecordToTheDatabase. 누군가가 이것을 확인하면 심각한 대화를 할 것입니다.
Tim Robinson

13
" Please"? 와우
구성자

3
워드 프레스에 "the_contents ()," "get_the_post ()"등과 같은 템플릿 헬퍼 기능이 있다고 덧붙이고 싶습니다.
카슨 마이어스

1
@Carson Myers Hah, 이것이 완벽한 실제 사례입니다. 내가 마지막으로 워드 프레스 코드를 볼 때 기억을 억제해야합니다 :-)
Mike Spross

답변:


21

산문 방법이 한 가지 예외를 제외하고는 동의합니다.

단위 테스트 사례

이들은 일반적으로 코드에서 호출되지 않으며 테스트 보고서에 표시됩니다. 따라서 약간 더 많은 산문을 읽는 것이 편리합니다.

  • CustomerOrderFailWhenCustomersIdIsInvalid 추가 : 실패
  • OutOfBoundsPriceReturnsAnError : 통과
  • CanDeleteAnEventFromASeason : 통과

심지어 이것도 아껴서해야하지만, 문법적 추가가 통과 한 것과 실패한 것을 좀 더 쉽게 표현할 수있는 하나 이상의 사례로 볼 수 있습니다. 물론 이것은 언어 / 프레임 워크가 메소드 이름 이외의 테스트 판독에서 테스트 설명을위한 좋은 메커니즘을 제공하지 않는 한,이 경우도 무시합니다.


1
산문 분석법 이름이 실제로 유익 할 수있는 좋은 예는 +1입니다. 이제 당신이 그것을 언급하기 때문에, 나는, 재미 있다 이 구체적으로 작성하는 단위 테스트 이름을 수행하고, 특별히 내가 나중에 실행할 때 도대체 테스트가 무엇을하고 있었는지 알고 있었다.
Mike Spross

유용하고 Roy Osherove의 제안 된 MethodUnderTest_Condition_ExpectedBehaviour 단위 테스트 명명 규칙에 맞습니다 . 예를 들어 AddOrder_WithInvalidCustomerId_Fails, CreateItem_WithOutOfBoundsPrice_ReturnsErrorDeleteEvent_EventExistsInSeason_Succeeds
StuperUser

예상되는 동작에 대한 @StuperUser, 실제로 예상되는 테스트 결과를 얻었으므로 메소드가 무엇을 반환 해야하는지 전혀 모릅니다.
ediblecode

@ danRhul 공정 포인트, 나는 충분히 명확하지 않았다; .._AdditionFails그리고 .._DeletionSucceeds더 나은해야한다. 방법 결과를 넣었지만 테스트 통과 / 실패 용어와 혼동 될 수 있습니다.
StuperUser

10

사무실 공간에서 로렌스를 역설하려면 ...

아니, 아니, 나는, 내가 여기에서 일하는 누군가가 'UploadTheFileToTheServerPlease'라는 이름의 함수를 가지고 있다면, 그는 그의 킥을 얻을 것이라고 믿는다.


10

이러한 "긴"이름 은 산문처럼 들리지 않습니다 . 혼자있을 때-아마도 나머지 코드와 함께, 그들은 더 많은 혼란을 초래합니다. 확인 해봐:

bool ResultOfTheUpload
      = UploadTheFileToTheServerPlease(TheNameOfTheFile, TheServersAddress);

Yuuuuk! ..

이것은 유효한 영어 텍스트가 아니며 프로그래밍 언어에서는 하나처럼 보입니다. 따라서 기사에 바이트를 소비하는 것은 의미가 없습니다.


1
내가이 방법을 너무 싫어하는 좋은 예입니다! 질문을했을 때 나는 그 자체가 산문처럼 들리면서 메소드 이름에만 집중하고 있었지만, 나는 당신에게 동의합니다. 호출 코드를 실제로 산문처럼 읽도록 만드는 것은 매우 어렵습니다. 영어.
Mike Spross

3
나는 제안한다bool ResultOfTheGentlyUploadOfTheFileToTheServer
Wizard79

'Variable'과 'aMethod'를 따라야하는 회사 표준을 만든 사람과 함께 일했습니다. 이 사람도 모든 코드 줄을 세로로 정렬하는 것을 좋아했습니다.
Chris

7

프로그래머 관점에서 "UploadFileToServer"는 "UploadTheFileToTheServerPlease"보다 이해하기 쉽고 이해하기 쉽습니다.

영어 문법, 가독성 및 이해성은 프로그래밍에서 더 중요합니다!


완전히 동의합니다. 며칠 동안 첫 번째 스타일로 작성된 코드를 읽으면 그것이 저를 미치게 할 것이라고 확신합니다.
Naveen

@Naveen : 나는 이와 같은 코드로 작업했으며, 처음으로 모든 방법의 이름을 바꿨습니다. 그리고 그것은 단지 개발자 나 아니었다 있는지 확실하지 않습니다,하지만 난 당신이 즉, 문장, 그들을 쓸 때 기능이 여러 일을 할 수 있도록하는 경향이 있다고 생각 UploadTheFileAndProcessItAndEmailTheOrdersToTheCustomers잘하면 아무 것도 있지만, 매우 현실에서 나쁜가.
Mike Spross

@Mike 그런 다음 두 가지 방법으로 리팩터링합니다;)
Gopi

2

내 인생의 오타가 몇 개인 지, 나는 결국

* UploadTehFileToTehServerPleaz
* WriteTehRecordToTehDatabase
* ResetTehSystemClock
* ICanHazTehCheezburger

진지하게, 나는 심지어 나의 학급 이름이 무엇인지 볼 것입니다. 수업이 "파일"이라고한다면 아마도

*UploadToServer
*DownloadFromServer

그래서 그것은

   File file = new file;
   file.UploadtoServer(ServerAddress);

사소한 예일 뿐이지 만 충분히 설명이 되길 바랍니다.


헤헤 필자는 실제로 "Teh"가 "English-like"이름 지정 패턴에 따라 메소드 이름으로 바뀌는 것을 보았습니다. 당신의 두 번째 요점에 관해서는 : 나는 완전히 동의합니다. 메소드 이름의 중복성은 내 또 다른 애완 동물입니다 ( File.UploadFileToServer... ugh).
Mike Spross

0

나는 개인적으로 상관하지 않습니다. 나는 그들을 보았고 그들은 나를 귀찮게하지 않습니다. 나는 다른 프로그래머가 그들에 대해 소리 치기 전까지는 생각조차하지 않았다. 누군가가 그다지 중요하지 않은 것에 대해 너무 신경을 쓰는 것이 충격적이라는 것을 알았습니다. 나는 그가 실제로 그것에 대해 화가 났음을 의미합니다. 그러나 그것은 약 11 년 전 경력의 초기 단계였으며, 그 이후로 개발자가 사소한 일에 대해 화를내는 것이 실제로 매우 일반적이라는 것을 알게되었습니다. 이것이 개발자 관리자가 돈을 많이받는 이유입니다. 그들은 매일 개발자들을 다루어야합니다.

그리고 오히려 "UL_FlToSrv"보다 그것을보고 싶습니다.

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