Quy ước đặt tên cho các biến "số foos" [đã đóng]


87

Giả sử rằng tôi cần lưu trữ số lượng đối tượng foo trong một biến.

Không phải là người nói tiếng Anh bản ngữ, tôi luôn tự hỏi tên nào là tốt nhất (= ngắn gọn và rõ ràng ngay lập tức) cho var đó.

foo_num? num_foo? no_foo? foo_no? hay cái gì khác?

Tên đầy đủ nên là number_of_foos, nhưng nó hơi dài dòng.

Yêu thích của bạn là gì và tại sao?


Tôi thích câu trả lời fooCount, nhưng tôi không nghĩ number_of_foos là quá dài, nhưng tôi cho rằng nó phụ thuộc vào "foo" thực sự là gì.
Chance

Và cả những gì bạn muốn làm với biến. Các biểu thức số học với number_of_foosnó trở nên cồng kềnh nhanh chóng.
user7610

Câu trả lời:


48

Tôi chọn fooCountvì nó đơn giản, và tôi nghĩ từ "đếm" là ngắn nhất và tốt nhất để mô tả nó, không phải "số" hay tương tự.

Tôi chọn FOO_COUNTnếu bạn cần lưu trữ nó cuối cùng và tĩnh (nếu bạn không cần thay đổi nó / nếu nó là một hằng số). (viết hoa tất cả các hằng số!)

Tôi đi tìm countvà gọi nó bằng cách Foo.countnếu bạn thực sự phải lưu trữ nó như một thuộc tính cho một lớp mà bạn đã tạo, nghĩa là Foo.

khả năng đọc cho bạn và cho nhóm của bạn!


foosCount, vì số nhiều thậm chí còn biểu thị một tập hợp tốt hơn. Và nó được cho là số đếm của một tập hợp các thứ.
Magne

Nhưng nó phụ thuộc. Số nhiều nghe tốt cho một số tên như gamesIncludedCount, nhưng số ít nghe tốt hơn cho các tên khác chẳng hạn như gameCount.
Magne

24

Vì biến lưu trữ số lượng đối tượng foo, fooCountnên tôi nhận được phiếu bầu.


+1 để thêm cơ sở lý luận (mặc dù cách diễn đạt hơi rườm rà).

1
@delnan - Thông thường tôi sẽ giải thích nhưng tôi đang trả lời từ điện thoại của mình.
Justin Niessner

16

Trong tiếng Anh, các từ 'number' và 'count' đều có thể hoạt động như danh từ hoặc động từ, nhưng có lẽ phổ biến hơn khi thấy 'number' được sử dụng như một danh từ và 'count' như một động từ. Vì vậy, bạn có thể tranh luận rằng 'số foo' hoặc 'num_foo' nghe quen thuộc hơn 'số foo' hoặc 'foo_count'. Tôi chắc chắn nghe có vẻ tự nhiên hơn khi tham chiếu đến một đại lượng không liên tục thay đổi. Từ 'count', ngay cả khi được sử dụng như một danh từ, gợi ý cho tôi một giá trị đang tăng lên theo thời gian.

Ruby và Python có các phương thức .count, chứng minh từ được sử dụng như một động từ, thay vì một danh từ. Trong Ruby, bạn có thể nói:

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

Tuy nhiên, điều này trả về một giá trị đại diện cho số foo, đây chính xác là những gì bạn có thể mong đợi nếu bạn vừa tham chiếu đến một biến có tên 'foo_count'. Vì vậy, theo một số cách, thực tế là 'foos.count' và 'foo_count' trông giống nhau là khá tốt.

'Số' có thể không rõ ràng trong một số trường hợp, vì người ta thường lưu trữ các số không đại diện cho số lượng của một thứ gì đó. Những người khác đã đề cập đến ID và số thẻ tín dụng rồi. Đây là một ví dụ khác:

num_string

Nhìn vào tên biến đó, bạn có đoán được nó đại diện cho điều gì không? Nó là một số nguyên đại diện cho số lượng chuỗi, hay nó là một chuỗi biểu diễn một số?

Vì vậy, tôi chỉ thực sự suy nghĩ và đưa ra một số ưu và nhược điểm cho từng loại khi tôi thấy chúng. Lý do tôi thậm chí còn ở trên trang cũ này là vì tôi thấy mình sử dụng hai cách không nhất quán và nghĩ rằng tôi muốn xem những gì người khác đang làm.

BTW, tôi không thích 'nr_foo', vì 'nr' thực sự không gợi ý hoặc nghe giống từ 'số' với tôi chút nào. Nghe có vẻ giống như 'ner', hoặc có lẽ là viết tắt của 'không được xếp hạng' hoặc 'bóng bầu dục quốc gia'. :-) Và tôi thậm chí sẽ không mạo hiểm để nói fooCnt nghe như thế nào. Không.


15

Nhân Linux sử dụng "nr_foo", tốt hơn "no_foo" (giống như một phủ định). Bản thân tôi có xu hướng sử dụng "fooCount" hoặc "fooCnt", nhưng đôi khi cũng có "numFoo". Tôi không chắc tại sao tôi lại bỏ trống giữa "fooCount" và "numFoo". Đoán nó phụ thuộc vào tâm trạng của tôi. Nhưng bạn, bạn nên nhất quán (như tôi nên làm vậy);)


4
@rjack - "số" là mơ hồ, "số" là cụ thể. Ví dụ, một số có thể là một ID. [Tôi nghĩ McConnell đã đưa ra quan điểm này trong "Code Complete", nhưng tôi không có bản sao bên mình.] Các từ viết tắt của "number" có nhiều khả năng được hiểu hơn (ngoài tác giả của nhân Linux) bao gồm "nFoo" và "numFoo."
Andy Thomas

1
@Andy Thomas-Cramer - IMHO không quá khó hiểu: credit_card_nrnghe giống như "số thẻ tín dụng", trong khi nr_credit_cardsâm thanh giống như "số thẻ tín dụng" và nó ngắn hơn credit_cards_count. Nghe có vẻ khá tự nhiên đối với tôi (nhưng tôi có thể sai vì tôi không phải là người nói tiếng Anh bản ngữ).
Giacomo

1
@rjack Dù sao thì nó cũng sẽ là credit_card_count, vì bạn thường không phân biệt danh từ khi chúng là một phần của một từ ghép.
siride

1
"Nr" của Linux và câu trả lời của bạn là một ví dụ điển hình về mức độ khó hiểu của từ "number". Trong Linux, "nr" được dùng để chỉ số tuần tự thay vì đếm. Ví dụ: __NR_openkhông phải là số lượng openlệnh gọi hệ thống - đó là chỉ số của lệnh gọi hệ thống, tức là giá trị bạn chuyển cho lệnh gọi hệ thống để chỉ định lệnh gọi hệ thống mà bạn đang gọi.
Ruslan

1
Như trong câu trả lời của @ Kal, cá nhân tôi sẽ tránh fooCntdo khả năng diễn giải sai.
Ruben9922


5

Cá nhân tôi sẽ đi cho total_fooshoặctotalFoos theo tùy thuộc vào tiêu chuẩn ngôn ngữ. Nó thể hiện tốt hơn rằng giá trị là tổng cuối cùng chứ không chỉ là số đang chạy.

Sẽ hợp lý hơn nếu nói "Tôi có tổng cộng 3 điểm" hơn là "Tôi có 3 lần đếm".

Nhìn chung, nó không phải là một vấn đề lớn nhưng tôi luôn sử dụng totalhơn count!


1
totalFooscó thể ngụ ý rằng đó là một bộ Foos hoàn chỉnh (nó xảy ra trong trường hợp của tôi, khi tôi đang sưu tập nhiều bộ khác nhau). Ngoài ra, rất hay khi có mã định danh ở đầu từ để dễ đọc. Vì vậy, tôi sẽ đi với foosCount, vì nó ít xung quanh hơn và bắt đầu với foo*. Bạn cũng có thể nói "Tôi có foosCount là 3".
Magne

3

Hầu hết fooCountnhư mọi người đã nói. Đôi khi, nó thích hợp hơn để sử dụng foos, thường là khi bạn thực sự không có danh sách foo hoặc chúng không phải là các đối tượng riêng biệt (ví dụ: secondsđối với một chiếc bánh pizza, bạn có thể cóslices , v.v.)

Tuy nhiên, chỉ sử dụng fooskhi không có khả năng nhầm lẫn - khi rõ ràng là bạn không bao giờ có danh sách các foos trong ngữ cảnh này.


Nếu bạn sử dụng foosđôi khi có nghĩa là "số lượng foocác đối tượng" và thời điểm khác có nghĩa là "bộ sưu tập của foocác đối tượng, tôi nghĩ rằng có thể dẫn đến sự nhầm lẫn.
James McNellis

slicesđối với tôi nghe giống như một mảng các sliceđối tượng, đó là một phần của một pizzađối tượng. Tôi muốn sử dụng sliceCount, hoặc nr_slices, hoặc bất cứ điều gì (Tôi vẫn chưa quyết định: D)
Giacomo

Có, chỉ sử dụng khi không có cơ hội condusion
cấu hình

2

Tôi sử dụng cho số lượng somethings: somethingCount ( something_count )

Tôi sử dụng cho số thứ tự của somethings: somethingIndex ( something_index ), vì từ "number" không rõ ràng ( nó có nghĩa là số lượng và số thứ tự )



Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.