|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Développeur Web Inscription : mai 2008 Messages : 78 ![]() |
Voilà mon souci :
Après avoir fait des études informatiques et un stage dans une boite internationale, je viens d'arriver dans le SI d'une PME. Et là, ho stupeur ! Je vois des choses hallucinantes !!! Des codes incompréhensibles et pas du tout optimisé ! Alors, je demande au collègue (sans chercher à provoquer de conflits dès mon arrivé) pourquoi il fait comme ça. La seule réponse a été "Tu sorts tout juste des études le jeunes. Dans le monde réel, on ne fait pas les choses de la même manière !" Alors je me suis demandé si c'est partout la même chose. A priori non. Mais, je pense que si vous postez quelque truc hallucinant que vous avez pu voir (fonctions à 100 paramètres, algorithme de calcul de la longueur d'une chaine de caractère...) on peut rigoler un bon peu. |
|
|
30
|
|
|
#2 |
|
Membre Expert
![]() Étudiant Inscription : octobre 2005 Messages : 1 202 ![]() |
si tu ne connais pas deja; tu peux lire l'excellent The Daily WTF : http://thedailywtf.com/
__________________
click my www ............|___ ...................\ .................._|_ ..................\ / ..................." |
|
|
00
|
|
|
#3 | ||
|
Expert Confirmé
![]() Inscription : décembre 2007 Messages : 1 903 ![]() |
Une bonne partie des codes "hallucinants" ont été faits sous extrême pression. Parfois, certains ont même l'apparence de code propre, mais, quand on y regarde de plus près, tout devient incompréhensible. Et on retrouve une doc d'une personne ayant passé une semaine à essayer de comprendre, et dont la conclusion est "l'algorithme semble aléatoire".....
Je suis sur que je suis coupable de quelques horreurs. Je me rapelle d'au moins une, j'avais un truc un peu complexe à coder très vite, et, en manque d'inspiration, j'ai sorti une usine à gaz(me souviens plus du détail, juste des horribles imbrications illisibles dans tous les sens). Après, il y a les gnous, gens doués, mais pas pour l'informatique. Et là, on tombe assez vite dans l'horreur. Du genre : Code :
Celà étant, ce qu'a dit ton collègue, même si dans son cas c'est peut-être faux, sera parfois vrai. On peut être amené à coder volontairement des solutions suboptimales d'un point du code afin de coller au plus près au besoin du client. J'ai eu un jour à générer du XML en cobol. A partir de cobol 3, il existe un ordre XML GENERATE. Il aurait donc semblé logique de l'utiliser. Eh bien non. Parceque la revue de code était assistée par des outils, calibrés pour le cobol 2, qu'il aurait couté fort cher de faire évoluer. Au final, j'ai fait un module "à la main", plus lent, plus moche, mais qui correspondait au besoin. Et qu'ils pouvaient valider avec leur outillage. Pas mal de choses doivent être désapprises. La solution optimale techniquement doit parfois être mise de coté(pas toujours, heureusement). Parfois même pour des raisons de maintenance : il sera difficille de trouver quelqu'un pour maintenir un code trop élégant, alors qu'on trouvera facilement quelqu'un pour déboguer du code bourrin.
__________________
Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten : 1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception 2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences 3)le temps de comprendre toutes les exigences, le projet est terminé 4)le temps de terminer le projet, les exigences ont changé Et le serment de non-allégiance : Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée. |
||
|
|
20
|
|
|
#4 |
|
Membre Expert
![]() Alexis LechevalierIngénieur développement logiciels Inscription : février 2005 Messages : 1 005 ![]() |
Après un certain nombre d'expériences professionnelles, j'ai découvert que si on dispose de temps, on sera beaucoup plus enclin à faire du code élégant.
Par contre, en cas de manque de temps, il est toujours plus viable de faire du code simple, direct et robuste, quitte à perdre en flexibilité et en maintenabilité. Il faut parfois choisir la manière de coder la plus rentable en fonction des contraintes posées par le client/l'utilisateur/le chef/le planning.
__________________
Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse" Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent...
|
|
|
31
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 734 ![]() |
Citation:
Même si cela peut s'avérer faux, la réponse du collègue est (le plus souvent) correcte... a) le monde réel N'EST PAS une théorie b) le monde réel a des contraintes c) quelques fois les problèmes sont TRES complexes, et les résoudre en suivant soi-disant les manières optimales les compliquent (le code, la maintenance, la perspective) plus que ne les simplifient... J'ai déjà fait des fonctions à 3000 lignes.... Je n'en suis pas particulièrement fier, mais je ne voyais pas (et j'ai eu du temps pour réfléchir) de moyen simple de faire autrement sans passer mon temps à jongler avec des sous-fonctions à 40 paramètres.... En bref, la théorie et la pratique sont 2 choses bien différentes...
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
72
|
|
|
#6 |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 520 ![]() |
souviron34, j'ai un peu de mal avec ce que tu dis.
Ok, un petit jeune qui arrive, il a certes ses visions utopiques du métier. Mais ce n'est pas rare non plus de trouver des personnes d'expériences qui vivent avec des procédures codées il y a 10 ans mais qui ne sont plus en rapport avec l'évolution de la norme et de l'optimisation possible. À la question "pourquoi tu fais comme ça?", il n'est pas rare d'entendre des trucs du genre "c'est pour optimiser le process". Ce qui était vrai à la version N mais 10 ans plus tard à la version N+3, ce n'est plus vrai. Bref, il faut savoir rester critique sur son code et le code de ses collègues...
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
41
|
|
|
#7 |
|
Membre Expert
![]() Cédric Inscription : février 2003 Messages : 283 ![]() |
Qu'est-ce qui est important? Avoir un code respectant la norme du jour (parce qu'une norme qui change tous les deux où trois ans, c'est juste une mode) ou un code qui fait ce que l'on attend de lui et sans bug (connus)?
|
|
|
101
|
|
|
#8 | |
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 734 ![]() |
Citation:
Cependant, sur la partie "optimisation" par exemple, qu'est-ce qui n'est plus vrai à la version N+3 ?? C'est parce que les DD ou la RAM ne coûtent pas cher, ou que les processeurs tournent 1000 fois plus vite ??? Et alors ?? Est-ce une raison pour ne pas optimiser ???
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Alexis LechevalierIngénieur développement logiciels Inscription : février 2005 Messages : 1 005 ![]() |
Citation:
Je me suis dit, je ne sais combien de fois, que je passerais un peu de temps entre deux projets pour "refactorer" les codes existants et, au final, je n'ai absolument pas touché faute de temps.
__________________
Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse" Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent...
|
|
|
|
50
|
|
|
#10 | ||
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 450 ![]() |
J'ai relativement peu d'années d'expériences mais j'ai vu pas mal de codes vraiment moches. Et pourtant j'ai bossé (en SSII) uniquement pour des "grands" groupes : Ministères, France Telecom, Airbus, ...
Un bout de code sur lequel un collègue est tombé sur un utilitaire de log qui faisait une surcouche à log4j (projet interne d'un des grands groupes ci-dessus) : Code Java :
En gros : une NullPointerException lancée dans le logger fait planter tout le programme (donc pas seulement l'utilitaire de log). Assez gênant... |
||
|
|
00
|
|
|
#11 | ||
|
Membre du Club
![]() Développeur Web Inscription : mai 2008 Messages : 78 ![]() |
Bon alors pour ceux qui se demandent encore pourquoi j'ai poster ce sujet.
Pour ceux qui disent que dans le monde de l'entreprise, les contraintes obligent certaines choses. Je suis d'accord que le monde de l'entreprise n'est pas celui des études cependant il y a des codes qui ne sont pas concevable. Par exemple, j'ai vue des requêtes où il était utilisé des group by à la place d'order by ! Un autre exemple : Code :
Et encore j'ai rajouté des commentaire. Donc, que l'on m'explique pourquoi ouvrir et fermer des connexions à la bdd dans une boucle (de plusieurs milliers de lignes). Alors qu'une seule requête et quelques jointures (vraiment simple) fonctionne très bien !! |
||
|
|
00
|
|
|
#12 | |
|
Expert Confirmé
![]() dba Inscription : juillet 2007 Messages : 2 520 ![]() |
Citation:
En bd, j'ai vu des hint pour "optimiser" des requêtes qui n'avaient aucune raison d'être de nos jours, surtout quand on ne sait même pas à quoi ça sert. "On m'a montré à faire comme ça quand j'ai commencé à travailler, y a 10 ans" n'excuse pas de se renseigner un minimum...
__________________
les règles du forum - mode d'emploi du forum Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur) JE NE RÉPONDS PAS aux questions techniques par message privé. Écrire en français sur un forum est une marque minimale de respect. |
|
|
|
20
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
En lisant le titre du post j'ai immédiatement pensé à ça ^^ (pardon à tous ceux qui connaissent déjà, ça date un peu faut bien avouer. Pour les autres, attention hallucination droit devant
Mais... vu la tournure qu'a pris la conversation je suis peut-être hors-sujet ?
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
|
|
20
|
|
|
#14 | |||
|
Membre du Club
![]() Développeur Web Inscription : mai 2008 Messages : 78 ![]() |
Citation:
Citation:
Citation:
Il m'est arrivé de prosposé des idées qui ont été immédiatement regetées ("C'est complètement stupide !") sans même m'avoir laissé finir ma phrase. Deux mois après, mon collègue trouve l'idée sur un site et remarque que c'est exélent ! Lorsqu'il la partage et que je fais remarqué que c'est ce dont j'avais parlé, il répond avec mauvaise fois : "Mais non, c'est pas du tout ça." (et dire que lors de mon entretient on me demandait d'être force de proposition) Après ça, lorsque je trouve des tentatives de réinvanter la roue, je ne peux qu'en rire et je suis désolé si ça choque ! |
|||
|
|
21
|
|
|
#15 | ||
|
Expert Confirmé Sénior
![]() Inscription : janvier 2007 Messages : 8 734 ![]() |
Citation:
![]() Je ne connaissais pas et c'est excellent .. Merci Citation:
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle". Consultant indépendant. Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie. C, Fortran, XWindow/Motif, Java Je ne réponds pas aux MP techniques |
||
|
|
15
|
|
|
#16 |
|
Expert Confirmé Sénior
![]() |
Je ne comprends pas le dillemme "élégant" contre "simple, direct et robuste". Car pour moi, "élégant" signifie "simple, direct et robuste" (et par extension, maintenable).
C'est le code "intelligent" ("clever" en anglais) qu'il faut craindre. Ce n'est pas le code non-optimisé qui est mauvais: c'est le code inutilement compliqué, moins efficace qu'un truc plus simple. La réimplémentation maison d'une fonction de la bibliothèque standard comme Convert.ToDouble(). Le test de vérité.
__________________
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant. "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?" Apparently everyone. -- Raymond Chen. Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen. |
|
|
20
|
|
|
#17 | ||
|
Expert Confirmé Sénior
![]() Romain VALERIPOOête Inscription : avril 2008 Messages : 2 572 ![]() |
Citation:
Citation:
C'est quoi vos ptits noms là-bas, tiens ? (moi c'est toshir0 ^^)
__________________
...pour les linguistes et les curieux >>> générateur de phrases aléatoires __________________ |
||
|
|
00
|
|
|
#18 | |
|
Membre éclairé
![]() Responsable de service informatique Inscription : septembre 2008 Messages : 306 ![]() |
Citation:
Qui est prêt à payer pour de la sur-qualité? |
|
|
|
20
|
|
|
#19 | |
|
Membre Expert
![]() Alexis LechevalierIngénieur développement logiciels Inscription : février 2005 Messages : 1 005 ![]() |
Citation:
Il n'y avait pas de contraintes de temps, ni de cahier des charges, un besoin encore mal délimité,... Se baser seulement sur un concept laisse énormément de liberté sur les choix d'architecture, de technologie,... Il n'y a pas de notion de rentabilité à mes yeux dans ce genre de travail, c'est de la recherche et développement. Tout comme la recherche scientifique, certaines de ces recherches aboutiront sur une exploitation réelle et rentable alors que d'autres finiront dans la poussière au fond du placard, pour peut-être être ressorties un peu plus tard, le moment opportun... [exagération]Combien de développements m'a-t-on confié devant faire certaines choses mais si ça pouvait aussi faire le café et ne pas prendre plus de temps à réaliser, ce serait encore mieux...[/exagération] S'il n'y a pas de surcoût, je ne vois pas pourquoi on refuserait systématiquement la "sur-qualité". Note: La notion de sur-qualité me pose un problème car je pense qu'on ne dois pas penser à la même chose. ![]() Si c'est dans le sens pourquoi faire simple alors que l'on peut faire compliqué sans que ça n'apporte rien, je suis d'accord, c'est inutile. Si par contre, c'est faire un peu réfléchi pour que ce soit plus simple ensuite, je vois vraiment pas le problème. Sans tomber dans l’excès et faire dans le très compliqué sans gagner en simplicité, bien-sûr.
__________________
Vu sur un paquet de cigarettes: "Fumer peut entrainer une mort lente et douloureuse" Vivre aussi... Ce n'est pas forcément moins douloureux et c'est même beaucoup plus lent...
|
|
|
|
20
|
|
|
#20 | ||||
|
Membre habitué
![]() Développeur en systèmes embarqués Inscription : juillet 2004 Messages : 115 ![]() |
sinon j'avais rencontré ça chez mon ancien client :
Code Fichier.h :
Code Fichier.c :
le pire c'est que ça marchait très bien, par contre pour relire...
__________________
il parait que la plume est plus forte que l'épée, heureusement j'ai une hache |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com