2009-08-13 23 views
12

Tôi thường đấu tranh với quyết định cách đặt tên cho một lớp học. Không quá nhiều vì mục đích của lớp là không rõ ràng, nhưng vì những cái tên như xxx *** Controller ***, xxx *** Quản lý ***, xxx *** Thông tin ***, xxx *** Helper *** , xxx *** Sử dụng ... mà tôi thấy ở mọi nơi.Đặt tên lớp hỗn loạn

Nếu tôi có một lớp tải lên một số nội dung qua HTTP, tôi có xu hướng đặt tên nó là HttpUploader hoặc một thứ gì đó trên các dòng đó. Tôi đã thấy nhiều trường hợp mà một lớp tương tự được đặt tên HttpUploadManager, HttpTransmissionController, HttpUploadHelper và như vậy.

Tôi sắp xếp nhầm lẫn khi sử dụng Bộ điều khiển, Trình quản lý, Thông tin, v.v. Có bài viết hoặc cuốn sách nào có thể giúp tôi trở thành tên người học tốt hơn không?

PS: Ngoài ra, một cái tên như HttpSender âm thanh khá yếu ớt khi so sánh với HttpTransmissionController hoặc HttpDispatchManager: P

+1

Bản năng của tôi là tránh xa xxxManager, xxxController, v.v. nếu có thể. Tôi đã thấy trích dẫn này gần đây: "Chỉ có hai điều khó khăn trong Khoa học Máy tính: không hợp lệ bộ nhớ cache và đặt tên cho mọi thứ". - Phil Karlton –

+0

@Dawie Strauss MVC quy ước ra lệnh đặt 'Bộ điều khiển' sau bất kỳ tên bộ điều khiển nào. –

+0

@George Stocker bạn đã có tôi :-) Trong tất cả các ví dụ trong câu hỏi (xxxController, xxxManager, xxxInfo, xxxHelper, xxxUtil) Tôi nghĩ xxxController là ít đáng ngờ nhất. Những người khác thường thêm nhầm lẫn hơn giá trị. –

Trả lời

12

đặt tên là khó khăn, vì vậy đừng lo lắng rằng bạn gặp khó khăn, bởi vì tất cả chúng ta làm. Và tin tôi đi, nó không bao giờ dễ dàng hơn thế!

Cá nhân với toàn bộ bộ điều khiển/người quản lý/người trợ giúp/Util/Bất cứ điều gì hậu tố tôi có xu hướng sử dụng quy tắc rằng nếu đó là một quy ước (ví dụ: đối với ASP.NET MVC, quy ước rằng tên lớp bộ điều khiển kết thúc bằng "Controller") sau đó sử dụng hậu tố, nếu không hãy thử như địa ngục để tránh nó. Tôi muốn có một lớp được gọi là HttpUploader hơn HttpUploadManager.

Điều quan trọng nhất về đặt tên, là lớp học nên làm những gì nó nói. Nếu đó là lớp tải lên nội dung nào đó bằng HTTP thì HttpUploader mô tả chính xác. Sử dụng một cái tên lạ mắt như HttpUploadManager không cho tôi biết nó làm gì. Liệu nó tải lên điều đó? Nó có quản lý việc tải lên nhiều thứ không? Tôi muốn giữ mọi thứ càng đơn giản càng tốt, trong khi mô tả mục đích của lớp/phương pháp/bất cứ điều gì. Một hướng dẫn tốt tôi thấy là nếu bạn đang thực sự đấu tranh để đặt tên một cái gì đó, như bạn đã dành tuổi suy nghĩ và bạn vẫn không thể chưng cất những gì nó làm vào một cái tên hợp lý, thì bạn có thể cần phải cấu trúc lại bất cứ điều gì bạn đang cố gắng đặt tên cho các thành phần nhỏ hơn, cụ thể hơn.

2

Bạn cũng có thể thử xem danh sách các hậu tố mô tả (đầy màu sắc hơn): ManagerManager.

Vấn đề với lời khuyên thông thường (tên lớp học là gì) là nhiều thứ mà lớp học không có tương đương với thế giới thực, do đó từ vựng truyền thống của chúng tôi có thể không phù hợp. Ví dụ: một HttpUploader có thể được ghép nối với một lớp khác giúp tải lên, thực hiện một số điều phối, hoặc (dám nói nó?) Quản lý việc tải lên. Kiểu phối hợp trung gian này phổ biến trong phần mềm, nhưng những từ ngữ để mô tả nó đều mơ hồ đến nỗi họ mời khinh miệt.

2

Cuốn sách Clean Code có một chương đầy đủ về tên biến. Đồ tốt.

+0

Cảm ơn. Chỉ cần ra lệnh cho nó. – akirekadu

Các vấn đề liên quan