on risque de partir dans un débat animé, mais, je crois utile de courir ce risque
D'abord, en ce qui concerne l'optimisation, il faut bien se comprendre: je ne dis absolument pas que toutes les optimisations doivent être "reléguées" au moment où le projet est sur le point d'être livré...
Je dis que toutes les optimisations doivent être faites "en temps utiles", ni avant, ni après, et ne suivant une logique.
Ainsi, il est clair que, si tu dois invoquer trois fois la même fonction pour obtenir la même information, et que cette fonction n'est pas un accesseur "classique" (qui sera bien souvent inliné), il semble opportun de prévoir de garder le résultat de cette fonction quelque part et de le réutiliser (du moins dans la mesure du possible).
Ce que je dis, c'est que, avant de se poser la question de savoir ce qui sera le plus efficace entre l'appel à la fonction ("C Style) sto* ou l'utilisation d'un *stringstream, la chose qui est sure, c'est que si une révision de ton algorithme te permet d'éviter à peu près n'importe quelle proportion de conversion, tu gagnera bien plus de temps à l'exécution, même en utilisant ce qui est "plus lent" qu'en te contentant de choisir la version "plus rapide", simplement parce que la révision de ton algorithme va agir sur un ensemble d'instruction, et non sur une instruction "unique".
Bien sur, certaines optimisations doivent être apportées dés la conception, d'autres au moment de la création de l'algorithme et d'autres enfin au moment du "bench final"...
Le problème est que trop souvent la conception est faite "a posteriori", ce qui enlève toute possibilité de voir " a priori " les problèmes qu'il faudra résoudre et qu'il est encore trop fréquent de voir les gens se "jeter sur leur clavier" et commencer à coder sans avoir la moindre idée de la logique qu'il vont suivre pour atteindre leur objectif, avec comme résultat un code "cochonné" et une perte notable de perfs...
Ensuite, le meilleur moyen pour assurer la qualité d'un code est - AMHA - encore de s'assurer - autant que faire se peut - qu'il soit "revu" par plus d'une personne, ne serait-ce que pour éviter qu'il ne soit "connu" que d'une personne (le coup de la modification "urgente" alors que le type qui a écrit le code est malade/en vacances/parti)
Et il n'empêche que, même si tu es le seul à poser les yeux dessus, il faut prendre en compte que tu risque de le faire après être passé à autre chose parfois pendant plusieurs mois (ce peut "simplement" être le client qui demande une amélioration) , et que ce sera à ce moment là que tu apprécieras (parce que tu aura oublié une partie des décisions non écrites prises lors de la mise au point) d'avoir un code lisible et facilement compréhensible.
Tu me demande si c'est une médiocrité propre à ta boite, je crois pouvoir dire que c'est un problème trop souvent rencontré dans de nombreuses boites: les gens sont des "handicapés de la communication", avec pour résultat que chacun "tire de son coté", sans s'intéresser à ce que font les autres, avec pour résultat qu'il devient difficile de mettre en place une politique de qualité globale...
Je ne serais pas plus étonné que cela que tu me dise que, lors de réunions (s'il en a), on assiste chez toi à d'éternelles discussions du genre de "mais je croyais que c'était toi qui t'en chargeais" ou de "mais je croyais que <tel truc> n'étais pas indispensable"...
Mais bon, ce n'est qu'un avis qui n'engage que moi et sur lequel je n'oblige personne à être d'accord avec moi
En outre, il faut comprendre que les avantages des flux, c'est qu'ils ont une interface commune, et qu'il s'adaptent à tout (et à bien plus qu'aux types primitifs)
A l'extrême limite, si je vois un code proche de
je n'ai même pas besoin de me poser la question de savoir de quel flux on parle, je sais que j'y envoie truc et machin
Code : Sélectionner tout - Visualiser dans une fenêtre à part is<<truc<<machin;
Qu'après je doive réfléchir au fait que c'est un ifstream, un istream ou un istringstream pour pouvoir gérer ce qui a été mis dans le flux est "secondaire" et propre à la fonction que j'étudie
Enfin, tu me demande si ma réponse tenait du "je le savais mais je ne voulais pas le dire".
C'est - à vrai dire - un peu plus complexe que cela.
Effectivement, oui, je savais que cela existe, mais, parce que je ne l'utilise jamais, je l'avais "occulté" (je n'y pensais plus au moment de mes interventions précédentes), et du coup, lorsqu'Azar en a parlé, je me suis effectivement "rappelé" que cela n'avait rien de neuf
Cela tient principalement au fait que, d'une manière ou d'une autre, je n'utilise jamais les fonctions qui mettent en oeuvre des techniques issues du C là où il existe une technique équivalente plus sécurisante à l'emploi propre au C++.
Est-ce un tord à chacun de voir
Partager