2010-09-14 34 views
12

Sở thích của bạn với việc đặt tên các lớp học ObjC là gì? Tôi là một chút không chắc chắn những gì sẽ là cách tiếp cận hợp lý nhất về điều này vì vậy nó sẽ được tốt đẹp để nghe một số ý kiến ​​khác.Tiền tố Lớp-C Mục tiêu

Apple khuyên bạn nên bắt đầu các lớp cacao, vì ObjC không hỗ trợ không gian tên. Google ObjC styleguide (mà tôi chủ yếu là nhằm mục đích) không đi với họ, trừ khi bạn đang mở rộng (loại, mở rộng lớp, vv) một NSClass.

Sở thích của tôi KHÔNG PHẢI là các lớp tiền tố, vì tôi cũng nghĩ rằng đó là một sự lãng phí các chữ cái và không góp phần vào một nguyên nhân. Nó chỉ nên được sử dụng trong mã khung công tác để báo hiệu rằng lớp này thuộc về nó chứ không phải các lớp ứng dụng của bạn, nhưng tôi sẽ không sử dụng nó ở cấp ứng dụng.

Của bạn là gì và quan trọng nhất là TẠI SAO?


Kết luận của tôi (xin vui lòng thêm ý kiến ​​của bạn để tạo ra các quyết định đúng đắn nhất) Cấp


Application Lớp học:

  • tôi quyết định đi với 1 Tiền tố Thư (như CMyClass). Lý do chính là vì mục đích tổ chức tệp (ví dụ: nhóm tốt hơn trong Trình tìm kiếm) và nó vẫn sử dụng các chữ cái tên lớp ít hơn các tiền tố có độ dài từ 2 trở lên.
    • Sử dụng tiền tố 'C' cho các lớp ca cao (ví dụ CAudioController.h)
    • Sử dụng tiền tố 'U' cho bộ sưu tập tiện ích (đồng bằng C, ví dụ như USystemAudio.h)

Lớp cấp khung:

  • Các lớp tiền tố có từ 2 chữ cái tùy chỉnh trở lên, độc đáo hơn, vì nó có thể sẽ được chia sẻ với các ứng dụng khác.

Categories

  • Categories được đặt tên như sau: NSClassName+ExtensionPurpose
+0

Liên kết tới hướng dẫn về phong cách ObjC của Google: http://google-styleguide.googlecode.com/svn/trunk/objcguide.xml#Class_Names - Họ nói: "Khi thiết kế mã được chia sẻ trên nhiều ứng dụng, tiền tố được chấp nhận và được đề xuất (ví dụ: GTMSendMessage). Tiền tố cũng được đề xuất cho các lớp ứng dụng lớn phụ thuộc vào thư viện bên ngoài. " – gregschlom

Trả lời

21

Cách tiếp cận chung của tôi là đặt tên lớp tiền tố là một phần của khung hoặc các nhóm có thể tải được, có thể được chia sẻ giữa nhiều ứng dụng và với các khung công tác khác, nhưng không bận tâm đến các lớp xuất hiện như một phần của ứng dụng độc lập.

Nếu Steve Jobs cấp cho tôi một điều ước là sẽ có không gian tên trong Objective-C 3.0 (sẽ có vào ngày mai).

+2

cá nhân tôi coi thường những tiền tố đó. ý kiến ​​của tôi là chính xác như bạn trong trường hợp này. Tôi chưa bao giờ có xung đột với các lớp khung công tác chưa bằng cách không sử dụng tiền tố và chúng có phần làm giảm khả năng đọc mã. trong các khung công tác, chúng có thể báo hiệu "hey i thuộc về khuôn khổ này chứ không phải mã ứng dụng của bạn". và nếu có xung đột thì trình biên dịch sẽ báo cáo vấn đề này (trong hầu hết các trường hợp). –

+1

Tôi đồng ý với cách tiếp cận của Jeremy. Vì Apple tiền tố tất cả các tên chung trong thư viện và khung công tác của nó (ví dụ, không chỉ tên lớp, nhưng typedefs cho cấu trúc, enums, v.v.) và bất kỳ khung bên thứ ba nào phù hợp, ứng dụng có thể tránh va chạm tốt nhất bằng * * sử dụng tiền tố ở tất cả. – jlehr

1

bạn chắc chắn nên tiền tố họ. nếu có va chạm, hành vi là không xác định.

điều thực sự xảy ra (lần cuối tôi chạy vào) là tệp nhị phân được tải, nhưng lớp của bạn không được tải nếu lớp khác (objc) có tên đó đã được tải. tôi sẽ cho bạn biết bạn sẽ nhận được cài đặt nào khi tạo một thể hiện của lớp này;) một va chạm như vậy có thể dẫn đến sự cố hoặc nhiều ngoại lệ bị nuốt (và một ứng dụng không hoạt động). rất nhiều nhà phát triển sử dụng 2 chữ hoa, đó là (tất cả mọi thứ bằng nhau) 26 * 26 cơ hội họ sẽ sử dụng cùng một tiền tố. một lần nữa - điều này đã xảy ra với tôi soooo .... tốt nhất là bạn làm điều đó để tránh viết lại nhiều mã sau này.

+2

Viết lại? Hoặc tìm kiếm và thay thế? –

+1

Thật vậy. Kịch bản xấu nhất của một trong những tình huống này thực sự không tệ chút nào. –

3

Tôi sử dụng tiền tố, ngay cả trong mã ứng dụng sẽ không được chia sẻ - chủ yếu là cho một cách nhất quán. Nói chung, tôi sử dụng tên viết tắt gồm 2 ký tự cho tên ứng dụng hoặc khung trong đó mã nguồn bắt nguồn, trừ khi một tiền tố khác (ví dụ: 3 chữ cái hoặc từ mô tả ngắn) có ý nghĩa hơn.

+0

Tiền tố 2 chữ cái sẽ hoạt động phần lớn thời gian, nhưng tôi nghĩ tôi muốn chỉ ra rằng về mặt kỹ thuật, Apple dự trữ tất cả các tiền tố đó cho chính chúng. Vì vậy, đề xuất của họ là luôn sử dụng tiền tố 3 chữ cái. –

+0

Apple ở đâu mà họ dự trữ * tất cả * kết hợp 2 chữ cái? Chỉ cần về tất cả các dự án Mac sử dụng một tiền tố 2 chữ cái. – mipadi

+1

Trong [WWDC 2010 videos] (http://developer.apple.com/videos/wwdc/2010/) Khung ứng dụng, Phiên 130 - Kiểm tra tương lai ứng dụng của bạn. – 0xced