좋은 이름을 생각할 수 없을 때 함수 / 변수 / 등의 이름은 무엇입니까? [닫은]


13

함수 / 변수 / 등을 정의 할 때 무엇을 이름을 지정할지 잘 모르겠다면 이름을 어떻게 지정합니까? 이름을 어떻게 생각해?

실제 이름을 지정할 때까지 임시 이름을 장소 카드로 사용하는 경우 어떤 임시 이름을 사용합니까?


최신 정보

내가 좋아하는 일을 사용하고 WILL_NAME_LATER, NEEDS_NAME또는 TO_BE_NAMED. 나는 채택 된 협약이 있기를 바랐다. 실제로이 채택 된 협약을 사용하면 IDE가 이름을 바꿀 때까지 이름이 강조되기를 바랐다.


변수 이름에 모든 대문자를 사용하는 것에주의하십시오. 일반적인 관례에 따르면 전역 변수를 의미합니다.
spong

@sunpech, 나는 상수에 대한 명명 규칙을 사용합니다. 그러나 대문자 사용이 눈에 띄게 만들어 이름을 바꾸는 것을 잊지 마십시오. 나는 그렇게 오랫동안 그렇게 지명하지 않습니다.
JD Isaacks

3
당신이 말하는 모든 사람들을 위해, 당신은 결코 이름을
내는

@JohnIsaacks 나는 굵게해야한다고 생각 일시적 . 너무 많은 사람들이이 질문을 읽고 성스러운 것으로 코드를 만들고 있습니다. 솔직히, 더 중요한 것으로 넘어 가려고 할 때 특히 느슨하게 코드를 작성할 수 있습니다. 여기서는 코드를 석재로 에칭하지 않습니다.
spong

1
이와 같은 규칙은 코드에 TODO를 추가하고 업데이트 해야하는 이유를 설명하는 것입니다. 많은 툴이 이러한 TODO를 구문 분석하고 수행해야 할 모든 작업의 ​​목록을 표시 할 수 있습니다.
Eduardo Scoz

답변:


29

디자인하려는 아티팩트의 이름을 생각할 수없는 것은 거의 불가능합니다. 간결하거나 섹시하지 않기 때문에 어떤 이름을 사용하든 마음에 들지 않을 수 있지만 너무 열심히 생각하면 이름이 잘못 지정된 인공물로 끝납니다.

객체를 구성하는 데 도움이되는 것이 있지만 일반적으로 팩토리라고합니다. 그냥 ObjectCreator라고 부릅니다. 둔하게 들리지만 적어도 분명하다.

호스트 이름을 IP 주소로 변환하는 사전이 있다고 가정합니다. 그냥 HostnamesToIpAddresses라고 부르십시오. 물론 길지만 정확히 무엇을하는지 말합니다.

무언가의 이름을 제시 할 수 없다는 것은 그것이 무엇을하고 있는지 모른다는 것을 의미합니다.


8
나는 식별자가 너무 길다는 것에 대해 불평하는 사람들을 항상 때리고 싶습니다 (3-4 단어 일 때). 타이핑 속도에 제한을 받아서는 안되며, 그렇다면 ABCD 를보고 타이핑하는 법을 배워야합니다!
dash-tom-bang

1
로 인해 +1 "The inability to come up with a name for something means you don't know what it is doing". 나는 이것이 정말로 중요한 포인트라고 생각합니다. 이를 실현하면 코드에서 모호성과 명확성을 찾는 데 도움이됩니다.
BiAiB

34

나는 항상 변수와 함수에 훌륭한 이름 을 부여하려고 노력 합니다 .

좋은 이름을 생각할 수 없다면 좋은 이름으로 정착하겠습니다 .

좋은 이름을 찾지 못하면 괜찮은 이름을 사용합니다 .

15 년 동안 전문 프로그래밍을 해본 결과 결코 좋은 이름을 찾지 못했습니다.


6
시적 같은 것에 +1.
spong

1
그러나 15 년 6 개월 전에 Microsoft Bob이 탄생했습니다.
VirtuosiMedia

12

변수 나 함수에서 좋은 이름을 생각할 수 없다면,하고있는 일을 이해하지 못하거나 디자인이 잘못되었습니다. 어느 쪽이든, "x"와 같은 임의의 이름을 때리는 것은 (좌표를 다루지 않는 한) 딜레마를 해결하지 못할 것입니다. 그것은 더 나쁘게 만들고 고통을 더 크게 유지합니다.


8
동의하지 않습니다. 개발자가 비즈니스 용어를 항상 완전히 이해하는 것은 아닙니다. 고객이 요구 사항을 수집하는 동안 용어를 전달하지 못할 수도 있습니다. 그러나 이것이 소프트웨어 생산을 막지는 않습니다. 프로토 타입이 생성되는 것을 막지는 않습니다. 또는 이해 부족으로 인해 코드가 올바르게 처리되지 않을 수도 있습니다. 그러나 이러한 상황에서 코드는 여전히 생산 및 제공되어야합니다.
spong

3
@sunpech 실례 합니다만, 조금 무섭습니다. 실제로 수행하는 작업을 모르는 임의 코드를 작성하는 것이 일반적이라는 것을 알려 주려고합니까? 무언가를 모른다면, 찾기 위해 약간의 노력을 기울이면 앞으로 문제를 피할 수 있습니다.
Adam Byrtek

@AdamByrtek 아니요, 그런 의미는 아닙니다. 내가 말하는 것은 클라이언트가 원하는 것을 가장 잘 이해하는 것이 개발자와 팀에게 달려 있지 않다는 것입니다. 어떤 고객은 자신이 원하는 것이 무엇인지 설명하기가 어렵거나 원하는 것이 무엇인지 모릅니다. 잘못된 코드가 발생합니다. 나쁜 요구 사항에서 비현실적인 마감일까지 프로젝트에서 문제가 발생합니다. 그게 현실이야 개발자가 모든 미지의 문제를 해결하고 고객이 완벽하며 마감일이 정확한 완벽한 세계는 없습니다. 프로토 타입을 위해 생성 된 코드는 버려야합니다. 그러나 코딩이 여전히 필요합니다.
spong

계속 ... 우리는 체크인 직전에 생산 코드 또는 최종 코드를 만드는 것에 대해 이야기하지 않습니다. 우리는 아직 완전히 이해하지 못한 것의 이름을 짓는 방법에 대해 이야기하고 있습니다. 처음에 좋은 이유가 불분명 한 것부터 시작하는 것입니다 (예 : 팀의 아무도 그것을 아직 이해하지 못했을 수도 있습니다. 심지어 클라이언트). 그러나 알려진 사항에 따라 상황이 계속 발전해야합니다.
spong

1
@sunpech : 유일한 내가 실제로 본 적이 배치 foobar코드에서 사용할 수 개념을 표시하는 데 사용 코드의 작은 조각이다. 물론, 이름을 생각할 때도 우연히 발견 foo되었지만, 유일한 합리적인 선택이었던 나쁜 위치에 결코 도달하지 않았습니다 . 그 일이 발생한다면, 나는 내가하고있는 일을 정말로 알지 못하고 대신해야 할 것을 알 때까지 드로잉 보드와 의사 코드로 돌아 가야합니다.
gablin

5

이 질문과 특히 그 대답은 무의미합니다. 누군가가 방금 변수 "Cup"이라는 코드를 유지해야 할 것입니다. 운이 좋지 않으면 누군가 당신이 될 것입니다!

변수가 있습니다. 일입니다. 어쨌든 그것은 것을 나타냅니다. 그리고 물건에는 이름이 있습니다. 그들이 당신이 알고있는 방법입니다! 당신은 실제로 당신이 실제 사물의 이름을 생각 해낼 수 없기 때문에 다른 사물의 이름을 지어야한다고 말하고 있습니까?

반복자를 i라고합니다. 중첩 된 반복자는 실수 일 가능성이 있지만 필요한 경우 나머지 모음을 순서대로 따라 가십시오 (a, e, o, u, 신이 저를 도와주세요).

그것과는 별도로, 그냥 그 일을 부르고 끝내십시오!


9
항의해야합니다! 분명히 내부 이터레이터는 j 이고 그 내부는 k 입니다. 오랜 수학 전통이 당신의 어깨 너머로 보입니다!
Frank Shearar

허. 나는 j와 k를 한 적이 없다. 그래도 괜찮다는 것을 알았습니다.
Dan Ray

8
Dijkstra가 컴퓨터 과학에 자연스럽게 적합한 이유 중 하나는 그의 이름에 가장 일반적인 세 ​​가지 반복자 변수가 올바른 순서로 포함되어 있기 때문입니다.
glenatron

3
@glenatron : 마지막으로, 그 이름을 철자하는 방법을 기억하는 방법!
구성자

4

좋은 이름을 즉시 얻을 수 없으면 "괜찮은"이름을 일시적으로 사용한 다음 코딩을 계속하십시오. 적어도 완벽 하지는 않지만 항목 을 적절하게 설명하는 것입니다 . 거의 항상 특정 코드 덩어리의 첫 번째 초안을 작성했을 때 더 완벽한 이름이 나에게 생겼을 것입니다. 코딩 과정을 통해 특정 변수에 대한 나의 의도가 더 명확 해집니다. (반면, 때로는 변수가 처음부터 잘못 생각되어 다른 것을 선호하여 삭제하는 경우가 있습니다.)


3

나는 그 기능이 무엇을해야한다고 생각하는지, 그 의도를 전달하는 것입니다. 함수 본문이 작성되면 함수를 호출하고 필요한 경우 돌아가서 이름을 바꿉니다.


1
특히 개발자가 용어 나 비즈니스 / 산업 의도에 익숙하지 않은 경우에는 항상 효과가있는 것은 아닙니다. 나중에 정의하고 변경해야한다는 것을 전달하기 위해보다 일반적이고 명백한 것을 사용해야합니다. OP는 의도를 알 수없는시기와 초기에 무엇을 사용 해야하는지 묻는 것 같습니다 . 이름이 어느 정도 의도를 전달하는 것이라면 좋은 이름은 이미 멀지 않습니다.

1
@sunpech 진지하게, 꽤 특정한 도메인을 가진 작업을 처음 시작할 때도 함수 이름을 찾는 데 어려움이 없었습니다. 아마도 더 많은 기능을 작성해야 할 수도 있습니다. :)
Adam Lear

1
@ sunpech : 기능을 모르고 어떻게 함수를 작성할 수 있습니까?
구성자

4
@ sunpech : 나는 그렇게 말하지 않았다. 방금 수행중인 작업을 모르면 함수를 작성할 수 없다고 말했습니다. 불가능합니다. 나는 그것이 일어난 것을 본 적이 없으며 어떻게 일어날 수 있는지 보지 못합니다. 어쩌면 내가 바보 일을하고 있지만 함수 DoFoo ()의 이름을 지정할 때 도대체 무엇을 넣습니까?
구성자

2
@ sunpech : 나는 처음부터 이름이 '좋은'것이라고 말한 적이 없습니다. 나는 함수를 만들고 싶을 때 상황이 어떻게 될지 알지 못하지만 어떻게 될지 모른다.
구성자

2

foobar . 함수 / 변수 이름을 지정하는 것의 의미는 아직 없으므로 Foo 및 / 또는 Bar를 정의하려는 모든 것과 함께 사용합니다.

이름이 무엇인지 더 잘 이해하면 나중에 쉽게 검색하고 찾을 수 있습니다.

Wikipedia의 Foobar 도 참조하십시오 .

foobar, foo, bar 및 baz라는 용어는 때때로 컴퓨터 프로그래밍 또는 컴퓨터 관련 문서에서 자리 표시 자 이름 (또는 메타 신택 틱 변수라고도 함)으로 사용됩니다. 그것들은 목적이 중요하지 않은 변수, 함수 및 명령과 같은 엔티티의 이름을 지정하는 데 사용되었으며 개념을 설명하는 데만 사용됩니다. 이 사용법에서는 단어 자체가 의미가 없습니다. 푸바는 때때로 단독으로 사용됩니다. 여러 엔티티가 필요한 경우 foo, bar 및 baz가 때때로 순서대로 사용됩니다.


1

함수 앞에 무언가를 붙이고 지금 당장 최고의 이름을 지정하십시오. 예를 들어, 선택한 모든 사용자를 위해 데이터베이스에 모든 제품을 저장하는 함수는 RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()


물론,이 경우에는 기능의 이름을 지정해야합니다.SaveAllProductsForTheSelectedUserToTheDatabase()
구성자

1

변수 이름을 지정하기 위해 하드라고 부르는 것은 무엇이든 //TODO find a better name주석을 달아 나중에 다시 이름을 바꿀 수 있습니다.

일반적으로 변수 / 함수 / 클래스를 사용하기 시작하면 더 나은 이름을 찾습니다.


0

코드를 염두에두고 이름을 잘 지정하고 싶을 때까지 기다리는 것보다 이름을 빨리 입력하는 것이 가장 좋습니다.


0

나는 잘 설명하기 쉬운 이름을 찾는 데 거의 문제가 없지만 클래스와 변수 이름이 매우 비슷하기 때문에 때때로 이름이 상당히 중복됩니다. 웹 클라이언트 웹 클라이언트 = 새로운 웹 클라이언트 (uri); ... 등.


0

때로는 zzzz를 일시적으로 사용합니다.

도움이되는 좋은 규칙은 다음과 같습니다.

  • 부울을 반환하고 부작용이없는 경우 : 형용사 (is로 시작)를 사용하지만 미래 시제는 사용하지 않습니다.
  • 다른 유형을 반환하고 부작용이없는 경우 : 명사를 사용하십시오.
  • 아무것도하지 않고 아무것도하지 않습니다 : 그런 다음 동사를 사용하십시오.
  • 그것은 클래스인가? 그런 다음 명사를 사용하십시오.

-1

과거에는 bob 을 많이 사용 했지만 함수 / 스크립트에서 이름이 잘못 지정된 유일한 변수 일 것입니다. 그렇지 않으면 코드를 빠르게 읽을 수 없기 때문입니다.

(bob은 단 일의 숙취입니다-bob 및 fred 변수를 사용하여 도망 가기)

카운터에 i 를 사용하게되어 기쁩니다 .

짧고 빠르지 않더라도 의미있는 이름을 사용하는 것이 좋습니다.


나는 그의 응용 프로그램 내에서 그의 응용 프로그램 및 클래스에 대해 같은 이름을 사용하는 사람과 함께 일했습니다. 말할 것도없이 그의 코드는 일반적으로 매우 열악했습니다.
dash-tom-bang

2
@ dash-tom-band : 그의 코드는 일반적으로 매우 밥이라고 생각합니다.
구성자

열거 형에 대한 헝가리 표기법으로 내 이름을 사용할 수 있다면 약간의 스트레칭이더라도 일반적으로 수행합니다. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
피터 터너

-1

내가 20 년 동안 일어난 적이없는 변수의 이름을 전혀 모른다면 ... 옛 여자 친구의 이름, 또는 여자 친구 였으면 좋겠다. 이러한 식별자가있는 마지막 코드는 몇 년 전에 프로덕션에서 제거되었습니다.



-2

blah , 그러나 일시적으로 만. 나는 항상 되돌아 가서 좋은 변수 이름으로 이름을 바꿉니다.


1
이것을 사용 하지 마십시오 . 아뇨.
다이내믹


-3

나는 책상에 물건을 사용하는 경향이 있습니다.

  • Alt
  • b / a / c (단일 편지 정크)
  • alk (발견 가능한 복수 문자 정크)

또한 일반 이름에 의존합니다 (적어도 함수의 경우).

  • 교환
  • 방법
  • 수정하다
  • 땜장이

이것은 일시적인 것입니다. 나는 맹세 아무것도 저장소, 훨씬 덜 생산으로하지 않습니다.

...


나는 항상 더럽다고 느끼지만 때로는 가장 명백한 방법의 이름은 "Go"또는 "DoIt"입니다. 더 나은 이름을 만들 수있을 때마다 "프로그램 이름이 암시하는 작업을 수행"하는 경우도 있습니다. 그러나 함수 이름으로 사용하기에는 너무 깁니다. :)
dash-tom-bang

@ dash-tom-bang : 어떤 이유로 든 run보다 훨씬 나아 보입니다 go. 프로그램 속도가 빨라지기 때문일 수 있습니다.
구성자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.