Công ước với các danh mục là bao gồm tiền tố khi mở rộng các lớp của Apple. Ví dụ:Quy ước về tiền tố cho các danh mục có từ ảo thuật là gì?
[string XXDataUsingUTF8];
(Vâng, đó là một ví dụ ngu ngốc Chỉ cần đi với nó..)
Những gì tôi đang chưa rõ ràng trên là những gì quy ước là khi định bắt đầu với copy
, set
, init
hoặc new
.
Ví dụ:
[request setHTTPBodyWithKeyValues: keyValues];
Nếu tôi thêm tiền tố của tôi, điều này không còn theo "setters bắt đầu với bộ" ước.
[request XXSetHTTPBodyWithKeyValues: keyValues];
Mặt khác, nếu tôi thêm các tiền tố sau khi thiết lập, nó không còn thực sự là một tiền tố:
[request setXXHTTPBodyWithKeyValues: keyValues];
Đây không phải là khủng khiếp nhập với set
, nhưng tôi nghĩ nó càng trở nên quan trọng với init
, copy
, v.v.
Apple có ghi lại điều này ở bất kỳ đâu không? Có gì sử dụng phổ biến?
Tôi đã không nhìn thấy bất kỳ hướng dẫn chính thức về vấn đề này, nhưng vì lợi ích của không gây nhầm lẫn ARC hoặc máy phân tích tĩnh LLVM, hoặc bất kỳ khác công cụ hoặc con người đọc mã của bạn, tôi sẽ chọn không giữ nguyên tiền tố thông thường ở đầu bộ chọn. Cá nhân, tôi sử dụng dấu gạch dưới trong tên phương thức mở rộng danh mục, vì các phương thức "thực" không bao giờ chứa một phương thức, do đó duy trì tính duy nhất của "tiền tố". Trong ví dụ của bạn sẽ là 'setXX_HTTPBodyWithKeyValues:'. Trong các phương thức mở rộng không dựa trên quy ước, nó chỉ trở thành 'XX_myMethodName'. – pmdj
Tôi đoán đây thực sự là câu trả lời * thực tế * duy nhất, phải không? Cảm ơn bạn đã chỉ ra điều hiển nhiên. :) –
Điểm rất thú vị! Một số người thích postfix chuỗi "namespace" của họ: 'setHTTPBodyWithKeyValues_XX:' không có gì đẹp hơn. –