Bất cứ ai khác tìm thấy các lớp và phương thức đặt tên là một trong những phần khó nhất trong lập trình? [đóng cửa]


275

Vì vậy, tôi đang làm việc trên lớp này có nghĩa vụ yêu cầu tài liệu trợ giúp từ nhà cung cấp thông qua dịch vụ web. Tôi cố gắng để đặt tên cho nó DocumentRetriever, VendorDocRequester, DocGetter, nhưng họ chỉ phải âm thanh. Tôi đã kết thúc việc duyệt qua dictionary.com trong nửa giờ cố gắng đưa ra một từ thích hợp.

Bắt đầu lập trình với những tên xấu giống như có một ngày tóc rất tệ vào buổi sáng, phần còn lại của ngày xuống dốc từ đó. Cảm nhận tôi?


2
Tại sao bạn muốn có một lớp, khi bạn rõ ràng chỉ cần một chức năng? Hãy chắc chắn rằng bạn kiểm tra steve-yegge.blogspot.com/2006/03/ cho đối với động từ là vấn đề tên lớp.
dùng51568

Hoặc, di chuyển về phía trước và tái cấu trúc khi cuối cùng bạn biết nó nên được gọi là gì.
Esteban Araya

16
Bạn đang đặt tên gì ?: phương pháp : sử dụng động từ , giống như get, set, tiết kiệm vv lớpbiến : sử dụng danh từ , như tài liệu, sử dụng, bối cảnh, vv giao diện : sử dụng tính từ , như in, clonable, iterable vv Sau khi đọc chủ đề này, tôi thích đề xuất của Spolsky cho các lớp và biến (nó sử dụng danh từ) và gợi ý của TravisO cho các phương thức (nó sử dụng động từ). Cũng đừng tạo các đối tượng kết thúc bằng 'er' .
Daniel Gasull

5
"Có hai vấn đề khó khăn trong khoa học máy tính: vô hiệu hóa bộ đệm, quy ước đặt tên và tràn âm thầm."
Karakuri

6
@karakuri Phiên bản tôi nghe là "có 2 vấn đề khó trong khoa học máy tính: đặt tên và bù 1 lỗi."
Haoest

Câu trả lời:


121

Những gì bạn đang làm bây giờ là tốt, và tôi thực sự khuyên bạn nên tuân thủ cú pháp hiện tại của mình, là:

bối cảnh + động từ + làm thế nào

Tôi sử dụng phương thức này để đặt tên cho các hàm / phương thức, các procs được lưu trữ SQL, v.v. Bằng cách giữ theo cú pháp này, nó sẽ giữ cho Intellisense / Code Panes của bạn gọn gàng hơn nhiều. Vì vậy, bạn muốn EmployeeGetByID () EmployeeAdd (), EmployeeDeleteByID (). Khi bạn sử dụng một cú pháp đúng ngữ pháp hơn như GetEmployee (), AddEmployee () bạn sẽ thấy rằng điều này sẽ thực sự lộn xộn nếu bạn có nhiều Gets trong cùng một lớp vì những thứ không liên quan sẽ được nhóm lại với nhau.

Tôi giống như cách đặt tên các tệp có ngày tháng, bạn muốn nói 2009-01-07.log không phải là 1-7-2009.log bởi vì sau khi bạn có một loạt chúng, thứ tự trở nên hoàn toàn vô dụng.


28
Tôi thích có bối cảnh được suy ra từ tên loại khi đặt tên phương thức ... class EmployeeRep repository {void Add (Nhân viên nhân viên); void Nhận (int id); void Get ALL (); void GetAll (Bộ lọc hành động <FilterCriteria>); } Bạn nghĩ sao?
Vyas Bharghava

5
Cũng giúp nếu bạn có một danh sách tiêu chuẩn của động từ "house". Vì vậy, nó luôn luôn Nhận và không tải / Đọc / Truy xuất / Chọn / Tìm .... vv
Tài khoản chết

2
Richard bạn đúng trong các kịch bản OOP, câu trả lời của tôi rút lại một chút và là một gợi ý mã hóa chung. Tôi đoán về mặt kỹ thuật, nó áp dụng nhiều hơn cho các ngôn ngữ không OOP. Employee.Add () và Employee.GetByID () sẽ là cách sử dụng tốt nhất trong OOP.
TravisO

6
Tôi thích hiệu ứng Intellisense của đề xuất của bạn, nhưng tôi thích một cách tiếp cận biết chữ hơn một chút. Vì vậy, tôi thích Employee.SetSupervisor () hơn Employee.SupervisorSet () vì nó đọc (giống tiếng Anh tự nhiên hơn.
Matthew Maravillas

12
Nhưng @TravisO, tiếng Anh không tốt lắm. Bạn không nhận được nhân viên, bạn có được một nhân viên. Điều gì nếu bạn có các hành động phức tạp hơn liên quan đến tính từ, chẳng hạn như InvalidateObsoleteQueries? QueriesInvalidateObsoletekhó đọc và không có ý nghĩa. Bên cạnh đó, trong C #, đặc biệt là với Resharper, thứ tự chữ cái là không liên quan. Nếu bạn bắt đầu gõ "emp", Resharper sẽ cung cấp cho bạn GetEmployee, SetEmployeevà thậm chí PopulateInactiveEmployeesList.
Ilya Kogan

54

Một bài học tôi đã học được là, nếu bạn không thể tìm thấy tên cho một lớp, thì hầu như luôn có điều gì đó không ổn với lớp đó:

  • bạn không cần nó
  • nó làm quá nhiều

13
Hoặc nó làm quá ít.
dùng51568

4
Cảm ơn bạn, điều này thực sự có liên quan đến tôi.
Haoest

52

Một quy ước đặt tên tốt sẽ giảm thiểu số lượng tên có thể bạn có thể sử dụng cho bất kỳ biến, lớp, phương thức hoặc hàm đã cho nào. Nếu chỉ có một tên có thể, bạn sẽ không bao giờ gặp khó khăn khi nhớ nó.

Đối với các hàm và đối với các lớp đơn, tôi nghiên cứu kỹ hàm để xem liệu hàm cơ bản của nó là biến đổi một loại vật này thành một loại vật khác. Tôi đang sử dụng thuật ngữ đó rất lỏng lẻo, nhưng bạn sẽ phát hiện ra rằng một số lượng lớn các hàm mà bạn viết về cơ bản lấy một cái gì đó ở một dạng và tạo ra một cái gì đó ở dạng khác.

Trong trường hợp của bạn, có vẻ như lớp của bạn biến Url thành Tài liệu. Có một chút kỳ lạ khi nghĩ về nó theo cách đó, nhưng hoàn toàn chính xác, và khi bạn bắt đầu tìm kiếm mẫu này, bạn sẽ thấy nó ở khắp mọi nơi.

Khi tôi tìm thấy mẫu này, tôi luôn đặt tên hàm là x Fromy .

Vì hàm của bạn biến Url thành Tài liệu, tôi sẽ đặt tên cho nó

DocumentFromUrl

Mô hình này là đáng chú ý phổ biến. Ví dụ:

atoi -> IntFromString
GetWindowWidth -> WidthInPixelsFromHwnd // or DxFromWnd if you like Hungarian
CreateProcess -> ProcessFromCommandLine

Bạn cũng có thể sử dụng UrlToDocumentnếu bạn thấy thoải mái hơn với đơn hàng đó. Cho dù bạn nói x Fromy hay y Tox có lẽ là vấn đề của hương vị, nhưng tôi thích Fromthứ tự hơn bởi vì cách đó bắt đầu của tên hàm đã cho bạn biết loại nào nó trả về.

Chọn một quy ước và gắn bó với nó. Nếu bạn cẩn thận sử dụng cùng tên với tên lớp trong các hàm x Fromy của mình , việc nhớ tên bạn đã sử dụng sẽ dễ dàng hơn rất nhiều. Tất nhiên, mẫu này không hoạt động cho tất cả mọi thứ, nhưng nó hoạt động khi bạn viết mã có thể được coi là "chức năng".


Một lời nhắc nhở tốt đẹp rằng trong các ngôn ngữ OOP, tên lớp không phải lúc nào cũng cần phải là danh từ nhưng đôi khi chúng có thể là "verbish". Do đó, tại sao các học viên OOP thường bị vấp ngã (như người đặt câu hỏi) vì quá nhiều nhấn mạnh rằng các lớp học phải là một "điều" trong thế giới thực.
Ray

7
XFromY-Convetion về cơ bản lặp lại những gì trong danh sách tham số và kiểu trả về: Foo fooFromBar (Thanh bar). Tùy thuộc vào bạn nếu bạn gọi đây là sự nhất quán hoặc phụ cấp.
Lena Schimmel

"Trong trường hợp của bạn, có vẻ như lớp của bạn biến Url thành Tài liệu". Từ khi nào các lớp được cho là "làm" mọi thứ, thay vì đại diện cho các khái niệm?
dùng51568

6
@Brian: nó chỉ dư thừa ở một nơi ... tại tờ khai. Bất cứ nơi nào khác bạn sử dụng nó, thật tuyệt khi có một chút nhắc nhở về các loại dữ liệu. Làm cho mã dễ đọc hơn mà không cần phải quay lại khai báo.
Joel Spolsky

3
@ stefan- Trong một số ngôn ngữ như C # và Java, tất cả mã phải được gói gọn trong một lớp không giống như trong C ++. Các hàm không phải là công dân hạng nhất trong các ngôn ngữ đó nếu bạn muốn mô đun hóa mã. Do đó, đôi khi bạn kết thúc với lớp có thể "làm" những thứ như một hàm.
Ray

30

Đôi khi không có một tên hay cho một lớp hoặc phương thức, nó xảy ra với tất cả chúng ta. Tuy nhiên, thường thì việc không thể đưa ra một cái tên có thể là một gợi ý cho một cái gì đó sai với thiết kế của bạn. Phương pháp của bạn có quá nhiều trách nhiệm? Lớp học của bạn gói gọn một ý tưởng mạch lạc?


3
Điểm rất tốt, thực sự.
Camilo Martin

27

Chủ đề 1:

function programming_job(){
    while (i make classes){
         Give each class a name quickly; always fairly long and descriptive.
         Implement and test each class to see what they really are. 
         while (not satisfied){
            Re-visit each class and make small adjustments 
         }
    }
}

Chủ đề 2:

while(true){
      if (any code smells bad){
           rework, rename until at least somewhat better
      }
}

Không có Thread.s ngủ (...) ở bất cứ đâu ở đây.


24

Tôi dành rất nhiều thời gian cũng như lo lắng về tên của bất cứ thứ gì có thể được đặt tên khi tôi đang lập trình. Tôi muốn nói rằng nó trả hết rất tốt mặc dù. Thỉnh thoảng khi tôi bị kẹt, tôi để nó một lúc và trong giờ giải lao, tôi hỏi một chút nếu ai đó có một gợi ý hay.

Đối với lớp học của bạn, tôi đề nghị VendorHelpDocRequester.


1
> VendorHelpDocRequester Tốt một. Tôi thực sự googled Người yêu cầu chứ không phải Người yêu cầu, cả hai dường như là những từ tiếng Anh hợp pháp.
Haoest

1
Tôi cũng đã làm điều đó một hoặc hai lần :)
willcodejavaforfood

1
Có một động từ trong tên lớp luôn nghe có vẻ sai đối với tôi. Thêm vào đó, nó luôn dẫn đến một số trùng lặp trong cách sử dụng (ví dụ VendorHelpDocRequester.request():). Tôi chỉ thích dạng số nhiều như `VendorHelpDocs.request () '
Edson Medina


15

Tôi nghĩ rằng đây là một tác dụng phụ.

Đó không phải là cách đặt tên thực sự khó khăn. Điều khó khăn là quá trình đặt tên khiến bạn phải đối mặt với sự thật kinh hoàng rằng bạn không biết bạn đang làm cái quái gì.


12

Tôi thực sự chỉ nghe thấy trích dẫn này ngày hôm qua, thông qua blog Tín hiệu so với tiếng ồn ở 37Signals, và tôi chắc chắn đồng ý với nó:

"Chỉ có hai điều khó trong Khoa học Máy tính: vô hiệu hóa bộ đệm và đặt tên cho mọi thứ." - Phil Karlton


simonwillison.net/2007/Jul/5/hard dẫn tôi đến tbray.org/ongoing/When/200x/2005/12/23/UPI đó dẫn tôi đến karlton.hamilton.com và vào karlton.hamilton.com/quotes /showallquotes.cgi , không bao gồm trích dẫn! (Nhưng tôi nhận ra # 5 từ Scrum.)
Daryl Spitzer

1
"Hai điều khó khăn trong Khoa học máy tính: vô hiệu hóa bộ đệm, đặt tên và các lỗi do một."
Dan Lugg

7

Thật tốt khi nó khó khăn. Điều đó buộc bạn phải suy nghĩ về vấn đề này và lớp học thực sự phải làm gì. Tên tốt có thể giúp dẫn đến thiết kế tốt.


6

Đã đồng ý. Tôi muốn giữ tên loại và biến của mình càng mô tả càng tốt mà không quá dài khủng khiếp, nhưng đôi khi chỉ có một khái niệm nhất định mà bạn không thể tìm thấy một từ hay.

Trong trường hợp đó, nó luôn giúp tôi hỏi đồng nghiệp về đầu vào - ngay cả khi cuối cùng họ không giúp đỡ, điều đó thường giúp tôi ít nhất giải thích thành tiếng và khiến bánh xe quay.


6

Tôi vừa mới viết về các quy ước đặt tên vào tháng trước: http://caseysoftware.com/blog/usiously-naming-conventions

Ý chính của nó:

verbAdjectiveNounStr struct - với Cấu trúc và Tính từ làm phần tùy chọn

Đối với động từ , tôi dính vào các động từ hành động: lưu, xóa, thông báo, cập nhật hoặc tạo. Thỉnh thoảng, tôi sử dụng "quy trình" nhưng chỉ để đề cập cụ thể đến hàng đợi hoặc công việc tồn đọng.

Đối với danh từ , tôi sử dụng lớp hoặc đối tượng được tương tác. Trong web2project, đây thường là Nhiệm vụ hoặc Dự án. Nếu Javascript tương tác với trang, nó có thể là thân hoặc bảng. Vấn đề là mã mô tả rõ ràng đối tượng mà nó tương tác.

Các cấu trúc là không bắt buộc vì nó là duy nhất với tình hình. Một màn hình danh sách có thể yêu cầu Danh sách hoặc Mảng. Một trong những hàm cốt lõi được sử dụng trong Danh sách dự án cho web2project chỉ đơn giản là getProjectList. Nó không sửa đổi dữ liệu cơ bản, chỉ đại diện cho dữ liệu.

Các tính từ là một cái gì đó hoàn toàn khác. Chúng được sử dụng như là bổ nghĩa cho danh từ. Một cái gì đó đơn giản như getOpenProjects có thể được thực hiện dễ dàng với getProjects và tham số chuyển đổi, nhưng điều này có xu hướng tạo ra các phương thức đòi hỏi khá nhiều hiểu biết về dữ liệu cơ bản và / hoặc cấu trúc của đối tượng ... không nhất thiết phải là thứ bạn muốn khuyến khích. Bằng cách có nhiều chức năng rõ ràng và cụ thể hơn, bạn hoàn toàn có thể bao bọc và ẩn việc triển khai khỏi mã bằng cách sử dụng nó. Đó không phải là một trong những điểm của OO sao?


4

Không chỉ là đặt tên cho một lớp, việc tạo ra một cấu trúc gói phù hợp có thể là một thách thức khó khăn nhưng bổ ích. Bạn cần xem xét tách các mối quan tâm của các mô-đun của bạn và cách chúng liên quan đến tầm nhìn của ứng dụng.

Hãy xem xét bố cục của ứng dụng của bạn bây giờ:

  • Ứng dụng
    • VendorDocRequester (đọc từ dịch vụ web và cung cấp dữ liệu)
    • VendorDocViewer (sử dụng người yêu cầu để cung cấp tài liệu của nhà cung cấp)

Tôi sẽ mạo hiểm đoán rằng có rất nhiều thứ đang diễn ra bên trong một vài lớp. Nếu bạn đã cấu trúc lại điều này thành một cách tiếp cận dựa trên MVC hơn và cho phép các lớp nhỏ xử lý các nhiệm vụ riêng lẻ, bạn có thể kết thúc bằng một cái gì đó như:

  • Ứng dụng
    • VendorDocs
      • Mô hình
        • Tài liệu (đối tượng đơn giản chứa dữ liệu)
        • WebServiceConsumer (đối phó với nitty gritty trong dịch vụ web)
      • Bộ điều khiển
        • Cơ sở dữ liệu Chương trình (xử lý kiên trì bằng ORM hoặc phương pháp khác)
        • WebServiceAdOG (sử dụng Người tiêu dùng để lấy Tài liệu và dán vào cơ sở dữ liệu)
      • Lượt xem
        • HelpViewer (sử dụng DBAd CHƯƠNG để nhổ tài liệu)

Sau đó, tên lớp của bạn dựa vào không gian tên để cung cấp ngữ cảnh đầy đủ. Bản thân các lớp có thể liên quan đến ứng dụng mà không cần phải nói rõ ràng như vậy. Kết quả là tên lớp đơn giản và dễ xác định hơn!

Một đề nghị rất quan trọng khác: vui lòng tạo cho mình một bản sao và chọn một bản sao của Mẫu thiết kế đầu tiên. Đó là một cuốn sách tuyệt vời, dễ đọc sẽ giúp bạn tổ chức ứng dụng của bạn và viết mã tốt hơn. Đánh giá cao các mẫu thiết kế sẽ giúp bạn hiểu rằng nhiều vấn đề bạn gặp phải đã được giải quyết và bạn sẽ có thể kết hợp các giải pháp vào mã của mình.


4

Leo Brodie, trong cuốn sách "Thinking Forth", đã viết rằng nhiệm vụ khó khăn nhất đối với một lập trình viên là đặt tên cho mọi thứ tốt, và anh ta tuyên bố rằng công cụ lập trình quan trọng nhất là từ điển đồng nghĩa.

Hãy thử sử dụng từ điển đồng nghĩa tại http://thesaurus.reference.com/ .

Ngoài ra, không sử dụng Ký hiệu Hungary EVER, tránh viết tắt và nhất quán.

Lời chúc tốt nhất.


1
+1 với lưu ý rằng bạn không nên sử dụng hệ thống được xử lý là gì; ứng dụng có thể đôi khi hữu ích, đặc biệt là trong ngôn ngữ lập trình mà không có hệ thống đánh máy tốt.
dùng51568

Tôi chưa bao giờ nghe nói về hệ thống so với ký hiệu Hungary, nhưng cũng không bao giờ là một ý tưởng hay trong bất kỳ môi trường nào - bạn nên luôn đặt tên dựa trên CÁI GÌ, chứ không phải CÁCH, và tiếng Hungary hoàn toàn là về cách thức.
Rob Williams

@RobWilliams Tôi nghĩ rằng họ đã đề cập đến bài viết của Joel Spolsky
Alois Mahdal

1
@RobWilliams Ngoài ra, bạn có chắc chắn về "Tôi chưa bao giờ nghe nói về X vs Y nhưng cũng không bao giờ là một ý tưởng hay ..." ...? :)
Alois Mahdal

4

Tóm lại:
Tôi đồng ý rằng tên tốt rất quan trọng, nhưng tôi không nghĩ bạn phải tìm ra chúng trước khi thực hiện bằng mọi giá.

Tất nhiên tốt hơn là có một cái tên tốt ngay từ đầu. Nhưng nếu bạn không thể đưa ra một trong 2 phút, đổi tên sau sẽ tốn ít thời gian hơn và là lựa chọn đúng đắn theo quan điểm năng suất.

Long:
Nói chung thường không đáng để suy nghĩ quá lâu về một cái tên trước khi thực hiện. Nếu bạn triển khai lớp của mình, đặt tên là "Foo" hoặc "Dsnfdkgx", trong khi thực hiện, bạn sẽ thấy những gì bạn nên đặt tên cho nó.

Đặc biệt với Java + Eclipse, việc đổi tên mọi thứ không hề khó chút nào, vì nó xử lý cẩn thận tất cả các tham chiếu trong tất cả các lớp, cảnh báo bạn về các xung đột tên, v.v. Và miễn là lớp này chưa có trong kho điều khiển phiên bản, tôi không ' Tôi nghĩ không có gì sai khi đổi tên nó 5 lần.

Về cơ bản, đó là một câu hỏi về cách bạn nghĩ về tái cấu trúc. Cá nhân, tôi thích nó, mặc dù điều đó đôi khi làm phiền đồng đội của tôi, vì họ tin rằng không bao giờ chạm vào một hệ thống đang chạy . Và từ mọi thứ bạn có thể tái cấu trúc, thay đổi tên là một trong những điều vô hại nhất bạn có thể làm.


3

Tại sao không phải là HelpDocumentServiceClient của một loại miệng hay HelpDocumentClient ... không quan trọng đó là nhà cung cấp, đó là khách hàng của một dịch vụ web liên quan đến các tài liệu trợ giúp.

Và có đặt tên là khó.


3

Chỉ có một tên hợp lý cho lớp đó:

HelpRequest

Đừng để các chi tiết thực hiện làm bạn mất tập trung vào ý nghĩa.


Một năm rưỡi sau, tôi chuẩn bị đề nghị HelpLibrarycho lớp học, nhưng điều này ít nhất là tốt. Nó trả tiền để đọc qua câu trả lời đầu tiên!
Jeff Sternal

2

Đầu tư vào một công cụ tái cấu trúc tốt!


cười lớn. Đôi khi tái cấu trúc không phải là lựa chọn tốt nhất (các dự án C ++ lớn), nhưng tôi chắc chắn đã dùng đến nó trước đây. Đôi khi tôi phải hoàn thành công việc và những cái tên sẽ đến với tôi sau này.
Steve S

2

Tôi bám vào những điều cơ bản: VerbNoun (đối số). Ví dụ: GetDoc (docID).

Không cần thiết phải ưa thích. Sẽ dễ hiểu một năm kể từ bây giờ, cho dù đó là bạn hay người khác.


Trong khi điều này đọc tốt, nó tổ chức kém vì nó ngược. Tốt hơn hết là nói DocGet () bởi vì khi bạn cũng tạo DocAem () DocRemove (), v.v ... tất cả chúng sẽ xuất hiện cùng nhau trong một danh sách. Phương pháp của bạn thực sự cho thấy nó xấu đến mức nào khi bạn có hàng tá Gets hoặc không có gì.
TravisO

Gợi ý tuyệt vời, TravisO.
Jon Smock

Tôi sẽ không sử dụng một động từ cho một lớp học bình thường.
willcodejavaforfood

2

Đối với tôi, tôi không quan tâm bao lâu một tên phương thức hoặc tên lớp dài như mô tả của nó và trong thư viện chính xác. Lâu rồi là những ngày bạn nên nhớ từng phần của API nằm ở đâu.

Intelisense tồn tại cho tất cả các ngôn ngữ chính. Do đó, khi sử dụng API của bên thứ 3, tôi muốn sử dụng intelisense của nó cho tài liệu thay vì sử dụng tài liệu 'thực tế'.

Với ý nghĩ đó, tôi ổn để tạo một tên phương thức như

StevesPostOnMethodNamesByingLongOrShort

Lâu - nhưng vậy thì sao. Ai không sử dụng màn hình 24 inch những ngày này!


1

Tôi phải đồng ý rằng đặt tên là một nghệ thuật. Sẽ dễ dàng hơn một chút nếu lớp học của bạn đang theo một "mô hình mong muốn" nhất định (nhà máy, v.v.).


1

Đây là một trong những lý do để có một tiêu chuẩn mã hóa. Có một tiêu chuẩn có xu hướng hỗ trợ đến với tên khi được yêu cầu. Nó giúp giải phóng tâm trí của bạn để sử dụng cho những điều thú vị khác! (-:

Tôi khuyên bạn nên đọc chương liên quan về Hoàn thành mã của Steve McConnell ( liên kết Amazon ), đi sâu vào một số quy tắc để hỗ trợ khả năng đọc và thậm chí bảo trì.

HTH

chúc mừng

Cướp


1

Không, gỡ lỗi là điều khó khăn nhất đối với tôi! :-)


gỡ lỗi thường đi xuống để hỏi đúng câu hỏi Có trò chơi số này trong đó bạn phải đoán một số từ 1 đến 1000. Nếu dự đoán của bạn quá thấp hoặc cao, bảng điều khiển sẽ cho bạn biết như vậy và bạn chỉ có 10 lần thử. Bạn làm nghề gì?
Haoest

1

Trình tải tài liệu? Thật khó để nói mà không có ngữ cảnh.

Nó có thể giúp hành động như một nhà toán học và mượn / phát minh ra một từ vựng cho tên miền của bạn khi bạn đi: giải quyết các từ đơn giản ngắn gợi ý khái niệm mà không cần đánh vần nó mỗi lần. Thông thường tôi thấy cụm từ dài latinate mà có được biến thành từ viết tắt, khiến bạn cần một cuốn từ điển cho các từ viết tắt nào .


1

Ngôn ngữ bạn sử dụng để mô tả vấn đề, là ngôn ngữ bạn nên sử dụng cho các biến, phương thức, đối tượng, lớp, v.v. Một cách lỏng lẻo, danh từ khớp với các đối tượng và động từ khớp với phương thức. Nếu bạn thiếu từ để mô tả vấn đề, bạn cũng thiếu hiểu biết đầy đủ (đặc điểm kỹ thuật) của vấn đề.

Nếu nó chỉ chọn giữa một tập hợp các tên, thì nó sẽ được điều khiển bởi các quy ước bạn đang sử dụng để xây dựng hệ thống. Nếu bạn đã đến một vị trí mới, được phát hiện bởi các quy ước trước đó, thì bạn nên bỏ ra một số nỗ lực để cố gắng mở rộng chúng (đúng cách, nhất quán) để bao quát trường hợp mới này.

Nếu nghi ngờ, hãy ngủ trên đó và chọn tên rõ ràng nhất đầu tiên vào sáng hôm sau :-)

Nếu bạn thức dậy vào một ngày và nhận ra mình đã sai, thì hãy thay đổi nó ngay lập tức.

Paul.

BTW: Document.fetch () là khá rõ ràng.


1

Tôi thấy tôi gặp rắc rối nhất trong các biến cục bộ. Ví dụ, tôi muốn tạo một đối tượng kiểu DocGetter. Vì vậy, tôi biết đó là một DocGetter. Tại sao tôi cần phải đặt cho nó một tên khác? Cuối cùng, tôi thường đặt cho nó một cái tên như dg (đối với DocGetter) hoặc temp hoặc một cái gì đó không mô tả.


1

Đừng quên các mẫu thiết kế (không chỉ các mẫu GoF) là một cách tốt để cung cấp từ vựng thông dụng và tên của chúng nên được sử dụng bất cứ khi nào phù hợp với tình huống. Điều đó thậm chí sẽ giúp những người mới làm quen với danh pháp để nhanh chóng hiểu kiến ​​trúc. Đây có phải là lớp bạn đang làm việc được cho là hoạt động như một Proxy hoặc thậm chí là Mặt tiền không?


1

Tài liệu của nhà cung cấp không phải là đối tượng? Ý tôi là, cái đó là hữu hình, và không chỉ là một số phép nhân hóa của một phần trong chương trình của bạn. Vì vậy, bạn có thể có một VendorDocumentationlớp với hàm tạo lấy thông tin. Tôi nghĩ rằng nếu một tên lớp có chứa một động từ, thường thì có gì đó không ổn.


1

Tôi chắc chắn cảm thấy bạn. Và tôi cảm thấy nỗi đau của bạn. Mỗi tên tôi nghĩ chỉ là rác rưởi đối với tôi. Tất cả dường như quá chung chung và tôi muốn học cách pha chút tinh tế và sáng tạo vào tên của mình, khiến chúng thực sự phản ánh những gì chúng mô tả.

Một gợi ý tôi có là tham khảo ý kiến ​​từ điển đồng nghĩa. Word có một điểm tốt, cũng như Mac OS X. Điều đó thực sự có thể giúp tôi thoát khỏi những đám mây và cho tôi một khởi đầu tốt cũng như một chút cảm hứng.


0

Nếu cái tên sẽ tự giải thích cho một lập trình viên thì có lẽ không cần phải thay đổi nó.

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.