カテゴリの慣例は、Appleクラスを拡張するときに接頭辞を含めることです。カテゴリにマジックワードをプレフィックスとして付けるための規約は何ですか?
[string XXDataUsingUTF8];
(はい、それは愚かな例ですウソツキは結婚のはじまり。。)私はあまり明確だ何
は識別子がcopy
、set
、init
で始まるとき慣例があるものである。たとえば、またはnew
。例えば
:
[request setHTTPBodyWithKeyValues: keyValues];
私は私の接頭辞を追加した場合、これはもはや「セッターがセットで始まる」規則に従います。
[request XXSetHTTPBodyWithKeyValues: keyValues];
私はセットした後、接頭辞を追加する場合一方、それは本当に、もはや接頭ません:
[request setXXHTTPBodyWithKeyValues: keyValues];
これはひどくset
にインポートされていませんが、私はそれがより多くなると考えます重要:init
、copy
など
アップルではこれを文書化していますか?何が一般的に使用されていますか?
私はこの上の任意の公式のガイドラインを見たが、ARCまたはLLVM静的アナライザ、またはその他の混乱はないの利益にはいませんでしたツールや人間があなたのコードを読んでいるなら、私は従来のプレフィックスをそのままセレクタの先頭に保つことを選択します。個人的には、カテゴリ拡張メソッド名にアンダースコアを使用しています。実際のメソッドには絶対値が含まれていないので、 "接頭辞"の一意性は保持されます。あなたの例では 'setXX_HTTPBodyWithKeyValues:'となります。大会以外の拡張方法では、それは単に 'XX_myMethodName'になります。 – pmdj
これは本当に唯一の実用的な答えだと思いますか?明白なことを指摘してくれてありがとう。 :) –
非常に興味深い点!いくつかの人は "namespace"という文字列を後置するのを好みます: 'setHTTPBodyWithKeyValues_XX:'はそれほど美しいものではありません。 –