En fait, c'est quoi l'optimisation ? - Divers - Programmation
Marsh Posté le 10-04-2006 à 22:26:59
Oui, mais la première méthode est peut-être plus lisible pour un collègue qui doit reprendre le code.
Marsh Posté le 10-04-2006 à 22:30:53
1. Rien a faire du nombre de lignes, le compilo gère sans soucis
2. Plus c'est simple, mieux c'est
3. Voir le goulot d'étranglement, optimiser apres.
faire du code crado sous prétexte d'optimisation, c'est une très mauvaise pratique.
Marsh Posté le 10-04-2006 à 22:47:13
Pour reprendre les deux posts précédents:
1. Le code est fait pour les humains. L'ordinateur peut lire plein de trucs, ce n'est pas le cas des humains, donc la simplicité et la clarté est importante (tout du moins dans un premier temps, et dans la majorité des cas). Viser la clarté, et viser la simplicité
2. Rien ne sert de courir tout ça. Avoir le code le plus rapide possible n'est que rarement intéressant, ce qu'il faut c'est avoir un code suffisament rapide.
3. Tes impressions sont toujours fausses, même les meilleurs codeurs se plantent 9 fois sur 10 quand ils estiment l'utilisation de ressources de leur appli (c'est pas une blague, ça revient en permanence dans les livres et les posts), si il y a besoin d'optimiser (parce que l'appli est clairement insuffisament rapide) il faut des données, et récupérer ces données est le rôle d'un profiler. Ne jamais rien optimiser sans avoir profilé auparavent.
Naturellement ces conseils tiennent pour de la prog classique, pas du temps réel.
Et pour ton problème, je choisis 3: je crée une fonction/méthode avec un nom bien clair (genre "dans_tableau" ou "in_table" ) qui prend une paire de coordonnées et ça me donne:
if( not in_table(ligne, colonne) ) then |
En bonus, si ce test est souvent répêté changer les conditions (si tu veux agrandir le tableau) ne sera effectué qu'en un seul point et non une demi douzaine (avec autant d'oublis et donc de bugs).
Ensuite, en fonction de l'expréssivité de ton langage tu peux aller encore plus loin.
Par exemple en Python je pourrais écrire un truc du style
Code :
|
Et pour être un peu plus propre je peux aussi créer un objet Point de coordonnées (ligne, colonne) qui permet de clarifier mon intention.
Code :
|
Note: en Ruby on écrira plutôt
Code :
|
ou encore
Code :
|
il n'y a pas qu'une manière d'écrire quelque chose de lisible, et la "meilleure manière" diffère en fonction du langage, de sa culture et de ses idiômes
Marsh Posté le 11-04-2006 à 07:55:36
Fazer> L'optimisation que tu proposes - à supposer qu'il s'agisse d'une vraie optimisation, ce qui reste encore à voir - est plutôt une micro-optimisation. L'intérêt n'est rarement autre que didactique ou ludique.
Clarté et propreté avant-tout.
Marsh Posté le 10-04-2006 à 22:21:08
C'est une question que je viens de me poser
personnellement je garde la 2e parce que ça prend moins de ligne et ça rend plus compliqué, donc ça fait mieux devant un prof 
voici 2 codes qui font la même chose, qui affiche un message d'erreur quand une variable LIGNE et COLONNE representant une position dans un tableau de 10x10, sors de celui-ci (ne vous preoccupez pas du langage)
if ( LIGNE < 1 ou LIGNE > 10 ) then
printf 'vous sortez du tableau'
else if ( COLONNE < 1 ou COLONNE > 10 ) then
printf 'vous sortez du tableau'
end if
et puis,
if ( min ( LIGNE, COLONNE ) < 1 ou max ( LIGNE, COLONNE ) > 10 ) then
printf 'vous sortez du plateau'
end if
la 2e methode prend moins de ligne que la 1ere, mais quand le compilo passe par les fonction min et max il doit surement en lire 5 ou 6 pour chaque fonction
laquelle est plus optimisé selon vous ?
c'est un topic a debat