Tableau C de strings global
Lexxis
Membre
EDIT : cette discussion est la suite de celle-ci :
http://pommedev.mediabox.fr/optimisation-refactoring-trucs-et-astuces/optimisation-if-else-if-ou-switch/msg69344/#msg69344
Tout dépend ce que tu as à tester... mais pour tester des entier je passerais par un switch bien avant d'arriver aux 100 if ;-) Comme dit Céroce c'est aussi une question de lisibilité du code pour maintenance.
Ensuite pour optimiser et sous certaines conditions tu peux avantageusement remplacer tout ces tests par un tableaux. Si je reprends ton exemple
http://pommedev.mediabox.fr/optimisation-refactoring-trucs-et-astuces/optimisation-if-else-if-ou-switch/msg69344/#msg69344
Tout dépend ce que tu as à tester... mais pour tester des entier je passerais par un switch bien avant d'arriver aux 100 if ;-) Comme dit Céroce c'est aussi une question de lisibilité du code pour maintenance.
Ensuite pour optimiser et sous certaines conditions tu peux avantageusement remplacer tout ces tests par un tableaux. Si je reprends ton exemple
<br />title = monTableauDeValeur[self._type - maValeurDeBase];<br />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Par exemple moi quand j'ai disons une TableView qui a pour but d'afficher un menu (donc contenu fixe qui ne va pas changer dans l'appli, et pas dépendant de ce que rentre l'utilisateur), je fais comme ça : Je vais quand même pas m'embêter à mettre des if-else ou des switch pour ça alors que ça peut tenir en 2 lignes
D'ailleurs, je pense m'en servir pour ce sujet également :
http://pommedev.mediabox.fr/optimisation-refactoring-trucs-et-astuces/traductions-bdd-ou-fichier-strings/msg69367/?topicseen#new
Le mieux c'est de regarder le code généré par les deux méthodes (si tu as un peu de temps à perdre).
+1 pour le tableau (en static ou en global).
Après dans un contexte embarqué, quand le code est exécuté en ROM, on préfère parfois les if/switch au tableau constant pour économiser de la RAM.
Est-ce la meilleure façon de déclarer un "bête" tableau de strings ?
En fait, je veux pouvoir utiliser mon tableau dans toute mon application, et pas dans une seule classe.
Il faudrait un tableau "global", genre un tableau que je déclare dans prefix.pch par exemple.
(Arrêtez avec prefix.pch )
Solution classique du langage C
StringConstants.h:
StringConstants.m
(En espérant que je ne me trompe pas).
Solution que je te conseille
MyStrings.h
MyStrings.h.m
Utiliser un NSArray apporte quelques commodités non négligeables, comme pouvoir connaà®tre la taille de liste, ou itérer.
Certes dans mon cas, je n'ai pas forcément besoin de vitesse (avec 10 ou 15 records...) par tableau.
Sinon, y'a pas moyen d'avoir un seul fichier .h par exemple ?
C'est contraignant de remplir 2 types de fichiers pour déclarer des bêtes tableaux de strings.
Par exemple avec le tableau C, on ne peut pas mettre directement tout dans le .h ?
Avant d'optimiser au niveau des instructions, il faut déjà avoir un algorithme qui est adapté au problème. Or il est plus simple de concevoir un algorithme performant quand un utilise des abstractions de haut-niveau, c'est-à -dire, éloignées des détails d'implémentation.