"foos"변수에 대한 명명 규칙 [닫힘]


87

변수에 foo 객체 수를 저장해야한다고 가정 해 보겠습니다.

영어 원어민이 아니기 때문에 저는 항상 그 변수에 대해 가장 좋은 (= 짧고 즉각적인) 이름이 무엇인지 궁금합니다.

foo_num? num_foo? no_foo? foo_no? 또는 다른 것?

전체 이름은이어야 number_of_foos하지만 약간 장황합니다.

가장 좋아하는 것은 무엇이며 그 이유는 무엇입니까?


나는 fooCount 대답을 좋아했지만 number_of_foos가 너무 길다고 생각하지 않지만 실제로 "foo"가 무엇인지에 달려 있다고 생각합니다.
Chance

또한 변수로 수행하려는 작업도 있습니다. 그 안에있는 산술 표현은 number_of_foos금방 번거로워집니다.
user7610 dec.

답변:


47

나는 fooCount그것이 간단 하기 때문에 간다 . 그리고 나는 "count"라는 단어가 "number of"등이 아니라 그것을 설명하는 가장 짧고 가장 좋은 단어라고 생각한다.

나는 이동에 대한 FOO_COUNT당신이 (당신이 일정한 경우 / 변경 필요가없는 경우)가 최종 정적 할 필요가있는 경우. (상수는 모두 대문자!)

나는 갈 count의해 그것을 호출하는 Foo.count당신이 정말 당신이 만든하는 클래스에 대한 속성으로 저장해야하는 경우 Foo.

당신과 당신의 팀을위한 가독성!


foosCount, 복수형은 세트를 더 잘 나타냅니다. 그리고 그것은 일련의 사물의 개수 여야합니다.
Magne

하지만 상황에 따라 다릅니다. 복수형은와 같은 일부 이름 gamesIncludedCount에는 좋지만, 단수형은 gameCount.
마그네

24

변수는 foo 객체의 수를 저장하므로 fooCount내 투표를 얻습니다.


근거를 추가하려면 +1합니다 (구문이 다소 우아하지 않지만).

1
@delnan-일반적으로 나는 자세히 설명하지만 내 전화로 응답합니다.
Justin Niessner

16

영어에서 'number'와 'count'라는 단어는 모두 명사 또는 동사로 작동 할 수 있지만 'number'는 명사로, 'count'는 동사로 사용되는 것이 더 일반적입니다. 따라서 'foo 개수'또는 'num_foo'가 'foo 개수'또는 'foo_count'보다 더 친숙하게 들린다 고 주장 할 수 있습니다. 지속적으로 변하지 않는 수량을 참조 할 때 확실히 더 자연스럽게 들립니다. '카운트'라는 단어는 명사로 사용될 때도 시간이 지남에 따라 증가하는 가치를 암시합니다.

Ruby와 Python에는 .count 메서드가있어 명사가 아닌 동사로 사용되는 단어를 보여줍니다. Ruby에서는 다음과 같이 말할 수 있습니다.

foos.count   # Count how many elements in the array 'foos'

그래도 이것은 foo의 수를 나타내는 값을 반환합니다. 'foo_count'라는 변수를 방금 참조한 경우 예상 할 수있는 것과 정확히 같습니다. 그래서 어떤면에서 'foos.count'와 'foo_count'가 비슷해 보인다는 사실은 꽤 좋습니다.

'숫자'는 어떤 양을 나타내지 않는 숫자를 저장하는 것이 일반적이기 때문에 어떤 경우에는 모호 할 수 있습니다. 다른 사람들은 이미 신분증과 신용 카드 번호를 언급했습니다. 다음은 또 다른 예입니다.

num_string

그 변수 이름을 보면 그것이 무엇을 나타내는 지 짐작할 수 있습니까? 문자열의 양을 나타내는 정수입니까, 아니면 숫자의 문자열 표현입니까?

그래서 저는 정말 큰 소리로 생각하고 제가 보는대로 각각에 대해 몇 가지 장단점을 제공합니다. 내가이 오래된 페이지에있는 이유는 두 가지를 일관되게 사용하지 않고 다른 사람들이하는 일을 볼 것이라고 생각했기 때문입니다.

BTW, 나는 'nr_foo'를 좋아하지 않습니다. 'nr'은 나에게 '숫자'라는 단어를 전혀 제안하거나 말하지 않기 때문입니다. '너'처럼 들리거나 '평가되지 않음'또는 '국가 럭비'를 의미합니다. :-) 그리고 나는 fooCnt가 어떻게 들리는 지 말하지 않을 것입니다. 안돼.


15

Linux 커널은 "no_foo"보다 나은 "nr_foo"를 사용합니다 (부정처럼 보입니다). 나 자신은 "fooCount"또는 "fooCnt"를 사용하는 경향이 있지만 때로는 "numFoo"도 사용합니다. 왜 "fooCount"와 "numFoo"사이를 오가는 지 모르겠습니다. 내 기분에 따라 달라 지겠지. 하지만 당신은 일관성이 있어야합니다.


4
@rjack- "number"는 모호하고 "count"는 구체적입니다. 예를 들어 숫자는 ID가 될 수 있습니다. [나는 McConnell이 "Code Complete"에서이 점을 언급한다고 생각하지만 나는 사본을 가지고 있지 않다.] "number"의 약어는 (리눅스 커널 작성자가 아닌) 이해 될 가능성이 더 높기 때문에 "nFoo"와 "numFoo"가 있습니다.
Andy Thomas

1
@Andy Thomas-Cramer-IMHO를 혼동하지 않습니다. credit_card_nr"신용 카드 번호"처럼 들리지만 "신용 카드 번호" nr_credit_cards처럼 들리며 credit_cards_count. 나에게 매우 자연스러운 소리입니다 (하지만 영어 원어민이 아니기 때문에 틀릴 수 있습니다).
Giacomo

1
@rjack 어쨌든 credit_card_count가 될 것입니다. 일반적으로 명사는 복합의 일부일 때 복수형을 사용하지 않기 때문입니다.
siride

1
Linux의 "nr"과 귀하의 대답은 "숫자"라는 단어가 얼마나 혼란 스러운지 보여주는 좋은 예입니다. Linux에서 "nr"은 개수 대신 연속 번호를 의미하는 데 사용됩니다. 예를 들어 시스템 호출 __NR_open수가 아닙니다. open시스템 호출의 인덱스입니다. 즉, 호출하는 시스템 호출을 지정하기 위해 시스템 호출 명령에 전달하는 값입니다.
Ruslan 19

1
@Kal의 답변에서와 같이 fooCnt잘못 해석 할 가능성이 있으므로 개인적으로 피할 것 입니다.
Ruben9922


5

나는 개인적으로 갈 것 total_foos또는 totalFoos언어 표준에 따라. 값이 실행 횟수가 아니라 최종 합계라는 것이 더 좋습니다.

또한 "나는 3 개의 foos를 가지고 있습니다"보다는 "나는 3 개의 foos를 가지고 있습니다"라고 말하는 것이 더 합리적입니다.

전반적으로 큰 거래는 아니지만 항상 사용 total합니다 count!


1
totalFoos완전한 Foos 세트 라는 것을 암시 할 수 있습니다 (제 경우에는 다양한 세트를 수집 할 때 발생했습니다). 또한 가독성을 위해 단어 시작 부분에 식별자가있는 것이 좋습니다. 그래서 나는 foosCount덜 양가적이고 시작하기 때문에 foo*. "나는 foosCount가 3"이라고 말할 수도 있습니다.
Magne

3

거의 fooCount모든 사람들이 말한 것처럼. 를 사용하는 것이 더 적절할 때가 있습니다 foos. 일반적으로 실제로 foo 목록이 없거나 개별 개체가 아닌 경우 (예 : seconds가질 수있는 피자의 slices경우 등)

foos하지만 혼동의 가능성이 없을 때만 사용하십시오 .이 컨텍스트에서 foo 목록이 전혀 없을 것이 분명한 경우 에만 사용하십시오 .


당신이 사용하는 경우 foos"의 수를 의미하는 때때로 foo"의 집합을 의미하고, 다른 시간 개체를 " foo개체를, 그 혼란으로 이어질 수 있다고 생각 것입니다.
제임스 McNellis에게

slicesslice객체의 일부인 객체 의 배열처럼 들립니다 pizza. 내가 사용하는 것 sliceCount, 또는 nr_slices:, 또는 무엇이든은 (D 나는 아직 결정하지 않은 경우)
자코모

예, 도관 가능성이 없을 때만 사용하십시오
구성자

2

나는 무언가의 양에 사용합니다 : somethingCount ( something_count )

나는 무언가의 순서 번호로 사용합니다 : somethingIndex ( something_index ), "숫자"단어가 모호하기 때문입니다 ( 수량과 순서 번호를 의미합니다 ).



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