Optimiser son code
muqaddar
Administrateur
Salut,
Bon, je viens de taper ceci dans un tutorial :
J'ai beau être bête et discipliné, je remarque que la ligne :
est écrite dans les 3 méthodes, ce qui me paraà®t répétitif. :-\
Donc je me demande, si on ne peut pas déclarer cette variable ailleurs, une seule fois, de manière à ce qu'elle soit reconnue dans toutes les méthodes. Dans ce cas, que vaut-il mieux faire, la déclarer dans le init, dans le header également ?
Ou faut-il la laisser là , pour être dans les conventions de programmation cocoa ?
Voilà , j'espère que cette question n'est pas trop bête. ??? Mais moi je suis fénéant et écrire 3 fois la même chose ça me fatigue, même un copier/coller. :P
Bon, je viens de taper ceci dans un tutorial :
- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(int)row <br />{<br /> NSString* identifier = [tableColumn identifier];<br /> FoodItem* item = [items objectAtIndex:row];<br /> return [item valueForKey:identifier];<br />}<br /><br />- (void)tableView:(NSTableView *)tableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(int)row {<br /> NSString* identifier = [tableColumn identifier];<br /> FoodItem* item = [items objectAtIndex:row];<br /> [item takeValue:object forKey:identifier];<br />}<br /><br />- (void)tableView:(NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn<br />{<br /> NSString* identifier = [tableColumn identifier];<br /> if ([identifier isEqualToString:@"name"]) {<br /> [items sortUsingSelector:@selector(compareName:)];<br /> } else {<br /> [items sortUsingSelector:@selector(comparePrice:)];<br /> }<br /> [table reloadData];<br />}
J'ai beau être bête et discipliné, je remarque que la ligne :
NSString* identifier = [tableColumn identifier];
est écrite dans les 3 méthodes, ce qui me paraà®t répétitif. :-\
Donc je me demande, si on ne peut pas déclarer cette variable ailleurs, une seule fois, de manière à ce qu'elle soit reconnue dans toutes les méthodes. Dans ce cas, que vaut-il mieux faire, la déclarer dans le init, dans le header également ?
Ou faut-il la laisser là , pour être dans les conventions de programmation cocoa ?
Voilà , j'espère que cette question n'est pas trop bête. ??? Mais moi je suis fénéant et écrire 3 fois la même chose ça me fatigue, même un copier/coller. :P
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
va devenir
Et tu ne peux affecter la variable une seule fois vu que sa valeur dépend de la colonne en cours. A la rigueur tu peux faire une macro mais y a-t-il beaucoup à gagner ? ???
A moins d'avoir une seule table avec une seule colonne, je vois pas trop où tu vois une optimisation ?
En la laissant comme variable locale, ca laisse plus de chance au compilateur de faire une optimisation (comme la stocker dans un registre au lieu de la mémoire)
il suffira ainsi de faire un getColumnId() pour obtenir ta variable identifier renseignée.
Mais personnellement, je conserverai la version complète (i.e. sans macro).
Bein j'ai une seule table à plusieurs colonnes. Simplement si cette variable est déclarée ailleurs comme dans le init par exemple, les 3 méthodes ne pourraient pas reconnaà®tre quelle colonne est sélectionnée apparemment ?
Oui, pour la macro, ça a l'air plus compliqué.
Pour la méthode setObject et objectValue, tu ne connais la colonne en cours seulement une fois dans la fonction. Idem pour la foncton gérant le click.
merci.
peut être sous la forme:
:sors:
ouais, plus concis, moins long... mais moins clair quand on lit vite non ?
Personnellement je ne fais plus de macros, mais des méthodes "inline"..
Normalement dans le résultat final c'est pareil, sauf que c'est plus pratique pour la maintenance, le deboggage..
Est-ce vraiment moins consommateur de ressources que de mette le code en long? Une fois que c'est compilé ça ne doit pas changer grand chose... Par contre la synthaxe (condition)?résultatSiVrai:résultatSiFaux; est intéressante à l'intérieur même d'un message, ou dans le un calcul. Exemple:
Et puis, rien n'empêche d'ajouter un petit commentaire.
Merci à deftones_chrix et Renaud pour le "Tiff à trois pattes" que je ne connaissais pas. 8)
Dans l'exemple que je donnai, c'était un peu extrême ;D
Perso je m'en sers pour les affectations et les affichages.
Et concernant les ressources, de nos jours cela ne fait pas gagner grand chose à l'exécution. Mais à une époque l'interet était le gain de place (alors que maintenant avec nos mégas en RAM et Go en disque...).
En effet:
prends moins de place que:
Nom de Zeus!!!! Je réalise que je commence à être un "vieux" dévéloppeur :-\