27 votes

Xcode 4.6, utilisé comme nom du paramètre précédent plutôt que comme partie du sélecteur

Je reçois l'avertissement suivant de Xcode 4.6.

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

Je sais que je peux désactiver cet avertissement, mais je préfère le réparer.

J'ai 109 avertissements de ce type, il est donc évident que j'écris mal les méthodes.

Voici quelques-unes de mes méthodes.

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

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

Alors, quelle est la bonne façon d'écrire ces méthodes ?

71voto

Kevin Ballard Points 88866

Votre première méthode consiste à déclarer le sélecteur +addFormatPrice:: . Avec des espaces, cela ressemble à

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

Ceci est invoqué comme [NSString addFormatPrice:0.3 :YES] .

Ce que vous devez faire, c'est donner un nom au paramètre précédent, par exemple

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

Qui serait alors invoqué comme [NSString addFormatPrice:0.3 removeCurSymbol:YES] .

8voto

Josh Caswell Points 40397

Vous aurez peut-être plus de facilité à comprendre si vous les répartissez sur plusieurs lignes ?

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

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

La structure d'un nom de méthode Objective-C est la suivante :

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

En d'autres termes, le nom complet de la méthode est décomposé, les noms des paramètres étant intercalés. Les deux points séparent chaque "étiquette" de son paramètre ; un espace sépare le nom du paramètre de la partie suivante du nom de la méthode.

Il manque à vos méthodes les secondes parties, les éléments qui décrivent les seconds paramètres. Pour l'instant, les noms de vos méthodes sont addFormatPrice:: et showHelpChoices:: qui sont toutes deux légales mais non idiomatiques. Lorsque vous les appellerez, cela ressemblera à ceci :

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

ce qui devrait montrer clairement que vos noms ne sont pas tout à fait corrects. Vous devez juste ajouter les étiquettes pour les seconds paramètres :

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

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

2voto

Carl Veazey Points 12122

Pour obtenir des conseils sur la façon de nommer les méthodes Objective-C, vous devez vous tourner vers un guide de style Objective-C tel que Directives de codage d'Apple pour Cocoa . Tout guide de style qui suit les conventions de la communauté et des cadres d'Apple vous suggérera de nommer votre méthode de manière à ce que l'objectif de chaque paramètre soit clairement décrit dans le nom de la méthode.

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

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

Notez le changement significatif du nom pour indiquer ce que (je suppose) il fait dans votre programme et ce que fait chaque paramètre. La méthode de votre classe n'ajoute rien à quoi que ce soit - elle renvoie plutôt une nouvelle chaîne. Cela permet à votre code de s'intégrer naturellement à celui des autres développeurs, aux frameworks d'Apple, aux autres bibliothèques que vous pouvez utiliser, et améliore grandement la lisibilité. Ne pas nommer vos paramètres dégrade la lisibilité et rend la maintenance beaucoup plus difficile.

Par ailleurs, les abréviations inutiles, y compris la notation hongroise, sont gênantes et ne correspondent pas au style. Si vous suivez les bonnes pratiques de nommage, vous n'en avez pas besoin et vous produirez un code dont la maintenance est un plaisir. Donc, ne l'appelez pas vw appelez-le view ou viewToShowIn . Ne l'appelez pas strVal appelez-le valueString ou somethingSpecificallyDescribingTheNatureOfTheValueString .

1voto

Kyle Fang Points 771

Voici comment vous êtes censé faire

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

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

essayez d'apprendre du code d'exemple d'Apple.

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

Pour commencer, vous pouvez essayer d'écrire votre méthode en une phrase.

comme ceci

applicationdidFinishLaunchingWithOptions

puis, ajoutez la description du nom avec des paramètres tels que (UIApplication *)application et (NSDictionary *)launchOptions

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X