31

Xcode 4.6 から次の警告が表示されます。

.. used as the name of the previous parameter rather than as part of the selector

この警告を無効にできることはわかっていますが、修正したいと思います。

私はそのような警告を109回持っているので、明らかにメソッドの書き方が悪いです。

これが私の方法のいくつかです。

+(NSString*)addFormatPrice:(double)dblPrice:(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw:(id)dg;

では、これらのメソッドを記述する正しい方法は何ですか?

4

4 に答える 4

81

最初の方法は、セレクターを宣言すること+addFormatPrice::です。スペースがあると、

+ (NSString *)addFormatPrice:(double)dblPrice :(BOOL)booRemoveCurSymbol;

これはのように呼び出されます[NSString addFormatPrice:0.3 :YES]

あなたがすべきことは、実際には前のパラメータに名前を付けることです。

+ (NSString *)addFormatPrice:(double)dblPrice removeCurSymbol:(BOOL)booRemoveCurSymbol;

その後、のように呼び出されます[NSString addFormatPrice:0.3 removeCurSymbol:YES]

于 2013-02-02T08:37:16.557 に答える
14

これらを複数の行に分割すると、理解しやすくなるかもしれません。

+(NSString*)addFormatPrice:(double)dblPrice
                          :(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw
                      :(id)dg;

Objective-Cのメソッド名の構造は次のようになります。

- (returntype)firstPartOfMethodWithParameter:(type)nameOfFirstParameter secondPartOfNameWhichDescribesSecondParameter:(type)nameOfSecondParameter;

つまり、完全なメソッド名が分割され、パラメーター名が散在しています。コロンは、各「ラベル」をそのパラメーターから分離します。スペースは、パラメーター名をメソッド名の次の部分から区切ります。

メソッドには、2番目のパラメーターを説明するビットである2番目の部分がありません。現在、メソッドの名前はとです。どちらも合法ですが、慣用的ではありませんaddFormatPrice::showHelpChoices::それらを呼び出すと、次のようになります。

[Excelsior addFormatPrice:2.0 :YES];
[thumpy showHelpChoices:aView :obj];

それはあなたの名前が完全に正しくないことを明らかにするはずです。2番目のパラメータのラベルを追加する必要があります。

+(NSString*)addFormatPrice:(double)dblPrice
    removingCurrencySymbol:(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw
             digeridoo:(id)dg;
于 2013-02-02T08:38:19.220 に答える
2

Objective-C メソッドの命名に関するアドバイスについては、 Apple の Cocoa のコーディング ガイドラインなどの Objective-C スタイル ガイドを参照してください。コミュニティと Apple のフレームワークの規則に従うスタイル ガイドでは、各パラメーターの目的がメソッド名の中に明確に記述されるようにメソッドに名前を付けることが提案されています。

+(NSString *)priceStringWithPrice:(double)price removeCurrencySymbol:(BOOL)removeCurrencySymbol

-(void)showHelpChoicesInView:(UIView *)view withSomethingWithAnUndecipherableName:(id)mysteryParameter

名前が大幅に変更されていることに注意してください。これは、プログラムで何をするか (私は推測します)、および各パラメーターが何をするかを示しています。あなたのクラス メソッドは何も追加しません。むしろ、新しい文字列を返します。これにより、コードが他の開発者のコ​​ード、Apple のフレームワーク、使用する可能性のある他のライブラリと自然に調和し、読みやすさが大幅に向上します。パラメータに名前を付けないと、可読性が低下し、保守がはるかに困難になります。

これに関連して、ハンガリー語表記を含む不必要な省略形は耳障りで、スタイルに適合しません。適切な命名規則に従えば、それらは必要なく、維持するのが楽しいコードを生成します。だから、それvwを呼び出すのではなく、viewまたはviewToShowIn. strValそれを呼ばないでvalueStringくださいsomethingSpecificallyDescribingTheNatureOfTheValueString

于 2013-02-02T08:54:44.293 に答える
1

これはあなたがこれをすることになっている方法です

+(NSString*)addFormatPrice:(double)dblPrice removeCurSymbol:(BOOL)booRemoveCurSymbol;

-(void)showHelpChoices:(UIView *)vw  whatEverThePurposeOf:(id)dg;

Appleのサンプルコードから学んでみてください。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

まず、メソッドを文で書いてみてください。

このような

applicationdidFinishLaunchingWithOptions

(UIApplication *)application次に、とのようなパラメータで名詞の説明を追加します(NSDictionary *)launchOptions

于 2013-02-02T08:36:15.957 に答える