Bạn đặt tên hàm / biến / vv là gì khi bạn không thể nghĩ ra một tên hay? [đóng cửa]


13

Khi bạn đang xác định hàm / biến / etc và không chắc nên đặt tên cho nó là gì, bạn đặt tên cho nó là gì? Làm thế nào để bạn đưa ra một cái tên?

Nếu bạn sử dụng tên tạm thời làm thẻ địa điểm cho đến khi bạn đặt tên đó là tên thật, bạn sẽ sử dụng tên tạm thời nào?


cập nhật

Tôi đã sử dụng những thứ như WILL_NAME_LATER, NEEDS_NAMEhoặc TO_BE_NAMED. Tôi đã hy vọng có một quy ước được thông qua, tôi thực sự hy vọng rằng nếu tôi sử dụng quy ước được thông qua này, IDE của tôi sẽ làm nổi bật tên cho đến khi tôi thay đổi nó.


Hãy cẩn thận về việc sử dụng tất cả các mũ cho tên biến. Theo quy ước phổ biến, nó có nghĩa là một biến toàn cầu.
bọt biển

@sunpech, tôi biết, tôi cũng sử dụng quy ước đặt tên cho các hằng số. Nhưng tôi nghĩ cách viết hoa làm cho nó nổi bật nên tôi không quên đổi tên nó. Tôi không để nó được đặt tên như thế lâu.
JD Isaacks

3
Đối với tất cả những người bạn đang nói, bạn sẽ không bao giờ gặp vấn đề với một cái tên ... Ngay cả Jon Skeet đôi khi cũng không thể: stackoverflow.com/questions/521893/
Lỗi

@JohnIsaacks Tôi nghĩ bạn nên in đậm tạm thời . Quá nhiều người đang đọc câu hỏi này và biến mã thành một thứ linh thiêng. Thành thật mà nói, vâng, bạn có thể viết mã cẩu thả ĐẶC BIỆT khi bạn đang cố gắng chuyển sang một thứ quan trọng hơn. Chúng tôi không khắc mã vào đá ở đây.
bọt biển

1
Tôi đoán quy ước cho một cái gì đó như thế này sẽ là thêm một TODO trong mã, với lời giải thích về lý do tại sao bạn cần cập nhật nó. Nhiều công cụ có thể phân tích các TODO đó và hiển thị danh sách tất cả những việc còn lại phải hoàn thành.
Eduardo Scoz

Câu trả lời:


29

Gần như không thể nghĩ ra tên cho một vật phẩm bạn muốn thiết kế. Bạn có thể không thích cái tên mà bạn nghĩ ra bởi vì nó không ngắn gọn hoặc gợi cảm, nhưng nếu bạn suy nghĩ quá nhiều, bạn sẽ kết thúc với một cổ vật được đặt tên kém.

Giả sử bạn có thứ gì đó giúp bạn xây dựng các đối tượng, nhưng bạn không biết đây thường được gọi là nhà máy. Chỉ cần gọi nó là ObjectCreator. Nghe có vẻ khó hiểu, nhưng ít nhất thì nó rõ ràng.

Giả sử bạn có một từ điển chuyển đổi tên máy chủ thành địa chỉ IP. Chỉ cần tiếp tục và gọi nó là HostnamesToIpAddresses. Chắc chắn nó dài, nhưng nó nói chính xác những gì nó làm.

Không có khả năng đưa ra một cái tên cho một cái gì đó có nghĩa là bạn không biết nó đang làm gì, điều đó cũng có nghĩa là bạn có một vấn đề lớn hơn trước bạn.


8
Tôi luôn muốn tát những người phàn nàn về số nhận dạng quá dài (khi họ chỉ có ba hoặc bốn từ). Chúng ta không nên bị giới hạn bởi tốc độ gõ của mình và nếu có, chúng ta nên xem ABCD và học cách gõ!
dash-tom-bang

1
+1 vì "The inability to come up with a name for something means you don't know what it is doing". Tôi nghĩ rằng đây thực sự là một điểm quan trọng. Nhận ra điều này giúp bạn tìm thấy sự mơ hồ và không rõ ràng trong mã.
BiAiB

34

Tôi luôn cố gắng để cung cấp cho các biến và chức năng của tôi tên tuyệt vời .

Nếu tôi không thể nghĩ ra một cái tên hay, tôi sẽ giải quyết một cái tên hay .

Nếu tôi không thể đưa ra một cái tên hay, tôi sẽ sử dụng một cái tên ổn .

Tôi chưa bao giờ, trong 15 năm lập trình chuyên nghiệp, không thể đưa ra một cái tên tử tế.


6
+1 để được, thích, thơ mộng.
bọt biển

1
... tuy nhiên, 15 năm và 6 tháng trước, Microsoft Bob đã ra đời.
VirtuosiMedia

12

Nếu bạn không thể nghĩ ra một cái tên hay trên một biến hoặc hàm, bạn sẽ không hiểu những gì bạn đang làm hoặc bạn có một thiết kế kém. Dù bằng cách nào, việc tát một số tên tùy ý như "x" (trừ khi bạn xử lý tọa độ) sẽ không giải quyết được vấn đề nan giải của bạn; nó sẽ chỉ làm cho nó tồi tệ hơn và nỗi đau để duy trì lớn hơn.


8
Tôi không đồng ý. Các nhà phát triển sẽ không luôn hiểu biết đầy đủ về thuật ngữ của doanh nghiệp. Heck, ngay cả khách hàng có thể không thể truyền đạt thuật ngữ trong quá trình thu thập yêu cầu - đôi khi thậm chí hiểu được doanh nghiệp của chính họ! Nhưng điều này không ngăn được phần mềm được sản xuất. Nó không ngăn chặn các nguyên mẫu được tạo ra. Hoặc thậm chí mã bị loại ra ngay vì thiếu hiểu biết. Nhưng mã trong các tình huống này vẫn cần phải được sản xuất và giao.
bọt biển

3
@sunpech Xin lỗi, nhưng điều này hơi đáng sợ. Bạn đang cố nói với chúng tôi rằng việc viết mã ngẫu nhiên không biết nó thực sự làm gì? Nếu bạn không biết điều gì đó, hãy nỗ lực tìm hiểu và bạn sẽ tránh được các vấn đề trong tương lai.
Adam Byrtek

@AdamByrtek Không, tôi không có ý đó. Điều tôi đang nói là không phải lúc nào nhà phát triển và nhóm phải hiểu rõ nhất về những gì khách hàng muốn. Một số khách hàng gặp khó khăn khi giải thích họ muốn gì hoặc không biết họ muốn gì. Mã xấu không xảy ra. Các vấn đề xảy ra trong các dự án từ yêu cầu xấu đến thời hạn không thực tế. Đó là thực tế. Không có thế giới hoàn hảo, nơi một nhà phát triển sẽ giải quyết tất cả những điều chưa biết, nơi khách hàng hoàn hảo và thời hạn là chính xác. Mã được tạo cho các nguyên mẫu có nghĩa là được ném ra. Nhưng mã hóa vẫn cần phải xảy ra.
bọt biển

tiếp tục ... Chúng tôi không nói về việc tạo mã sản xuất hoặc mã cuối cùng ngay trước khi đăng ký. Chúng ta đang nói về cách đặt tên một cái gì đó mà chúng ta chưa có sự hiểu biết đầy đủ nhất - để bắt đầu ban đầu với một thứ không rõ ràng vì có thể là một lý do chính đáng (ví dụ: không ai trong nhóm hiểu được, có thể không thậm chí là khách hàng). Nhưng mọi thứ cần phải tiến về phía trước vẫn dựa trên những gì đã biết.
bọt biển

1
@sunpech: Nơi duy nhất tôi thực sự nhìn thấy foobarđược sử dụng trong mã là trong các đoạn mã nhỏ được sử dụng để hiển thị một khái niệm. Chắc chắn, tôi cũng vấp ngã khi nghĩ ra tên, nhưng tôi chưa bao giờ kết thúc ở vị trí tồi tệ như vậy, nơi foođã là lựa chọn hợp lý duy nhất. Nếu điều đó xảy ra, thì tôi thực sự không biết tôi đang làm cái quái gì và cần quay lại bảng vẽ và mã giả thay cho đến khi tôi biết phải làm gì.
gablin

5

Câu hỏi này và đặc biệt là câu trả lời của nó làm tôi sợ hãi vô nghĩa. Ai đó sẽ phải duy trì mã mà bạn vừa đặt tên một biến là "Cup", bạn biết đấy. Nếu bạn không may mắn, ai đó sẽ là bạn!

Bạn đã có một biến. Đó là một điều. Nó đại diện cho một điều, dù sao. Và mọi thứ có tên. Đó là cách bạn biết chúng là những thứ! Bạn có thực sự nói với tôi rằng bạn phải đặt tên cho một thứ khác bởi vì bạn không thể đưa ra tên của điều thực tế?

Lặp đi lặp lại nên được gọi là i. Lặp đi lặp lại lồng nhau có thể là một sai lầm, nhưng nếu bạn cần chúng, sau đó tìm cách vượt qua các nguyên âm còn lại, theo thứ tự (a, e, o, u, và thần giúp tôi, vâng, đôi khi y).

Ngoài ra, chỉ cần gọi những gì nó là và được thực hiện với nó!


9
Tôi phải phản kháng! Rõ ràng iterator bên trong nên được gọi là j và một bên trong k . Truyền thống toán học lâu đời đang nhìn qua vai của bạn!
Frank Shearar

Huh. Tôi chưa bao giờ làm j và k. Tôi thấy rằng nó hợp lý, mặc dù.
Dan Ray

8
Một lý do Dijkstra phù hợp tự nhiên với khoa học máy tính là tên của ông bao gồm ba biến lặp phổ biến nhất theo đúng thứ tự.
glenatron

3
@glenatron: Cuối cùng, một cách để nhớ cách đánh vần tên đó!
cấu hình

4

Nếu tôi không thể đưa ra một cái tên tuyệt vời ngay lập tức, tôi tạm thời sử dụng một tên "ổn", sau đó tiếp tục mã hóa. Ít nhất nó sẽ là một cái gì đó mô tả đầy đủ các mặt hàng, thậm chí nó không hoàn hảo . Hầu như mọi khi, khi tôi viết xong bản thảo đầu tiên của đoạn mã cụ thể đó, một cái tên hoàn hảo hơn sẽ xảy ra với tôi. Thông qua quá trình mã hóa, ý định của tôi với biến số cụ thể đó trở nên rõ ràng hơn. (Mặt khác, đôi khi tôi nhận ra rằng biến được hiểu sai bắt đầu và tôi xóa nó theo hướng có lợi cho thứ khác.)


3

Tôi đặt tên cho nó là những gì tôi nghĩ rằng chức năng nên làm - một cái gì đó ít nhiều truyền đạt ý định. Khi phần thân của hàm được viết, tôi thấy rõ ràng nên gọi nó là gì và quay lại và đổi tên nó nếu cần.


1
Điều này không phải lúc nào cũng hoạt động, đặc biệt là khi nhà phát triển có thể không quen thuộc với thuật ngữ hoặc thậm chí ý định của doanh nghiệp / ngành. Một cái gì đó chung chung và rõ ràng hơn nên được sử dụng để truyền đạt rằng nó cần được xác định và thay đổi sau này. OP dường như đang hỏi khi nào không biết ý định và bước đầu nên được sử dụng. Nếu việc đặt tên là một cái gì đó ít nhiều truyền đạt ý định, thì một cái tên tốt đã không còn xa.
bọt biển

1
@sunpech Nghiêm túc, ngay cả khi lần đầu tiên bắt đầu công việc với một tên miền khá cụ thể, tôi đã không gặp khó khăn khi đưa ra một tên hàm. Có lẽ tôi chỉ cần viết nhiều chức năng hơn. :)
Adam Lear

1
@sunpech: Làm thế nào bạn có thể viết một hàm mà không biết nó làm gì?
cấu hình

4
@sunpech: Tôi không nói thế. Tôi chỉ nói rằng bạn không thể viết một hàm mà không biết nó đang làm gì. Điều đó là không thể. Tôi chưa bao giờ thấy nó xảy ra, và tôi không thấy nó có thể xảy ra như thế nào. Có lẽ tôi đang bị lừa, nhưng khi bạn đặt tên một hàm DoFoo (), bạn sẽ đặt cái quái gì vào trong đó ??
cấu hình

2
@sunpech: Tôi chưa bao giờ nói tên phải 'tốt' ngay từ đầu. Tôi chỉ không thấy làm thế nào bạn sẽ gặp phải một tình huống mà bạn muốn tạo ra một chức năng nhưng bạn không biết nó sẽ làm gì.
cấu hình

2

foothanh . Vì chưa có ý nghĩa đằng sau việc đặt tên hàm / biến, tôi sử dụng một số kết hợp Foo và / hoặc Bar với bất cứ điều gì tôi đang cố gắng xác định.

Nó giúp bạn dễ dàng tìm kiếm / tìm kiếm sau này khi tôi hiểu rõ hơn về những gì nó nên được đặt tên.

Cũng xem Foobar trên wikipedia .

Các thuật ngữ foobar, foo, bar và baz đôi khi được sử dụng làm tên giữ chỗ (còn được gọi là biến metasyntactic) trong lập trình máy tính hoặc tài liệu liên quan đến máy tính. Chúng đã được sử dụng để đặt tên cho các thực thể như biến, hàm và lệnh có mục đích không quan trọng và chỉ phục vụ để thể hiện một khái niệm. Các từ này không có ý nghĩa trong việc sử dụng này. Foobar đôi khi được sử dụng một mình; foo, bar và baz đôi khi được sử dụng theo thứ tự đó, khi cần nhiều thực thể.


1

Tiền tố chức năng của bạn với một cái gì đó và đặt cho nó một cái tên tốt nhất bây giờ. Ví dụ: một hàm lưu tất cả các sản phẩm cho người dùng được chọn vào cơ sở dữ liệu có thể là RENAME_SaveAllProductsForTheSelectedUserToTheDatabase()


Tất nhiên, trong trường hợp này, bạn chỉ nên đặt tên cho chức năngSaveAllProductsForTheSelectedUserToTheDatabase()
cấu hình

1

Bất cứ điều gì tôi gọi những biến khó gọi tên này tôi đều đưa ra //TODO find a better namenhận xét để tôi có thể quay lại sau để đổi tên nó

Thông thường, khi tôi bắt đầu sử dụng biến / function / class, tôi tìm thấy một tên tốt hơn cho chúng.


0

Tốt nhất là đặt một cái tên tốt trong khi bạn có mã trong tâm trí, hơn là đợi đến sau này khi bạn muốn bạn đặt tên tốt cho nó!


0

Tôi hầu như không bao giờ gặp vấn đề khi tìm tên tốt, mô tả .. nhưng đôi khi việc đặt tên trở nên khá dư thừa, trong đó tên lớp và tên biến ar rất giống nhau. WebClient webclient = new Webclient (uri); ... Và tương tự.


0

Đôi khi tôi sử dụng zzzz tạm thời.

Một quy tắc tốt để giúp bạn là:

  • Liệu nó có trả về một boolean và không có tác dụng phụ: Sau đó sử dụng một tính từ (bắt đầu bằng, là) nhưng không bao giờ là tương lai.
  • Liệu nó có trả về một loại khác và không có tác dụng phụ: Sau đó sử dụng một danh từ.
  • Nó không trả lại gì ngoài việc làm gì đó: Sau đó sử dụng một động từ.
  • Có phải là một lớp: Sau đó sử dụng một danh từ.

-1

Trước đây tôi đã sử dụng bob rất nhiều, nhưng đây sẽ là biến duy nhất không được đặt tên đúng trong hàm / script vì nếu không thì mã sẽ nhanh chóng không thể đọc được.

(bob là một sự nôn nao từ ngày uni - thoát khỏi việc gọi các biến bob và fred)

Tôi rất vui khi sử dụng tôi cho một quầy.

Tốt hơn là sử dụng tên có ý nghĩa, ngay cả khi chúng không ngắn và linh hoạt.


Tôi đã làm việc với một anh chàng đã sử dụng những cái tên như thế cho các ứng dụng và lớp học trong các ứng dụng của mình. Có lẽ không cần phải nói, mã của anh ta nói chung là rất kém.
dash-tom-bang

2
@ dash-tom-band: Tôi nghĩ rằng mã của anh ấy nói chung là rất bob.
cấu hình

Nếu tôi có thể đặt tên của mình vào một số ký hiệu tiếng Anh cho một bảng liệt kê, tôi thường làm điều đó, ngay cả khi nó hơi căng. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispitable);
Peter Turner

-1

Nếu tôi hoàn toàn không biết nên đặt tên cho biến đó là gì, điều đó đã không xảy ra trong hơn hai mươi năm ... tên của những người bạn gái cũ, hay những người phụ nữ tôi muốn là bạn gái. Mã cuối cùng với các mã định danh này đã bị xóa khỏi sản xuất một vài năm trước.



-2

blah , nhưng chỉ là tạm thời Tôi luôn quay trở lại và đổi tên chúng thành tên biến tốt.


1
Không bao giờ sử dụng này. Không tệ.
Năng động

-2

Doit (), a (), b (c) xxxx () ....

Tất nhiên họ được tái cấu trúc đi .... thường


-3

Tôi có xu hướng sử dụng những thứ trên bàn làm việc của tôi.

  • Cốc
  • Alt
  • Foo
  • b / a / c (thư đơn lẻ)
  • kiềm (phát âm nhiều chữ cái)

Tôi cũng nghiêng về tên chung (ít nhất là cho các chức năng):

  • trao đổi
  • quá trình
  • sửa lại
  • tinker

Điều này là cho các công cụ tạm thời mặc dù. Tôi thề không có gì làm cho nó vào kho lưu trữ, sản xuất ít hơn nhiều.

...


Tôi luôn cảm thấy bẩn, nhưng đôi khi tên rõ ràng nhất cho một phương thức là "Go" hoặc "DoIt". Bất cứ khi nào tôi có thể đưa ra một cái tên tốt hơn tôi làm, nhưng đôi khi nó thực sự là "làm công việc mà tên của chương trình ngụ ý sắp xảy ra." Tuy nhiên, điều đó là quá dài để sử dụng cho một tên hàm. :)
dash-tom-bang

@ dash-tom-bang: Vì một số lý do, có runvẻ tốt hơn nhiều go. Có lẽ vì tất cả chúng ta đều thích chương trình của mình nhanh hơn.
cấu hình
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.