J'ai toujours utiliser des caractères de soulignement. Il crée une distinction claire entre les variables locales et les variables d'instance. Il évite également les messages du compilateur dans la situation suivante:
@interface MyClass
{
NSString *name
}
@property (nonatomic, copy) NSString *name;
- (id) initWithName:(NSString *) name;
@end
@implementation MyClass
@synthesize name;
// The following method will result in a compiler warning
// (parameter name same as ivar name)
- (id) initWithName:(NSString *) name {
if (self = [super init]) {
self.name = name;
}
return self;
}
@end
EDIT:
Après avoir enduré downvotes et la lecture à travers les commentaires, permettez-moi d'essayer de faire de mon point de vue:
Apple recommande d'ivars ont le même nom que leurs biens. Apple recommande également que les propriétés commencer par une lettre minuscule. Et Apple recommande également que les collectivités locales de variables commencent par une lettre minuscule.
Maintenant, vous avez un problème, parce que quand vous lisez un morceau de code, et vous voyez une variable utilisée, vous ne pouvez pas' dire par la convention de nommage si cette variable est un ivar ou une variable locale. Qui suce. La solution est d'avoir différentes conventions de nommage pour ivars et les variables locales. C'est tout simplement du bon sens.
La façon de mettre en œuvre cette convention de nommage n'est pas pertinent. Si vous voulez vraiment, vous pouvez tout simplement ajouter "_WOOHAHA" à la ivar noms. Je n'aime pas (mais peut-être d'autres). Le truc, c'est que les gens qui savent ce qu'ils font ont décidé d'aller avec le "trait de soulignement préfixe" pour ivars. À mon humble avis, ils ont pris la bonne décision, même si leur propre société recommande de quelque chose d'autre. (les développeurs dont je parle sont les gens de l'écriture de certains des principaux Apple cadres de et les .NET Framework classes)
En fin de compte, la qualité du code est plus important que de respecter une règle stupide qui n'est pas encore suivie par le peuple de la prédication.
Une autre remarque sur le code que vous avez indiqué: ne jamais utiliser de conserver sur les propriétés de la chaîne. Vous devez utiliser le copier à la place.
Pour plus d'info à propos de copier/conserver sur propriétés, voir:
http://stackoverflow.com/questions/387959/nsstring-property-copy-or-retain