web-dev-qa-db-ja.com

Xcode 4.6、セレクターの一部としてではなく、前のパラメーターの名前として使用

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;

だから、これらのメソッドを書く正しい方法は何ですか?

31
Jules

最初の方法は、セレクター+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]のように呼び出されます。

78
Lily Ballard

これらを複数の行に分割すると、理解しやすくなりますか?

+(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;
12
Josh Caswell

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と呼びます。 strValvalueStringsomethingSpecificallyDescribingTheNatureOfTheValueStringとは呼ばないでください。

2
Carl Veazey

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

+(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などのパラメーターを持つ名詞の説明を追加します

1
Kyle Fang