# Le club des professionnels en informatique > La taverne du Club : Humour et divers > Humour Informatique >  Les codes les plus hallucinants rencontrs :

## LeGnome12

Voil mon souci :
Aprs 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 incomprhensibles et pas du tout optimis !

Alors, je demande au collgue (sans chercher  provoquer de conflits ds mon arriv) pourquoi il fait comme a.
La seule rponse a t "Tu sorts tout juste des tudes le jeunes. Dans le monde rel, on ne fait pas les choses de la mme manire !"

Alors je me suis demand si c'est partout la mme chose. A priori non.

Mais, je pense que si vous postez quelque truc hallucinant que vous avez pu voir (fonctions  100 paramtres, algorithme de calcul de la longueur d'une chaine de caractre...) on peut rigoler un bon peu.

----------


## granquet

si tu ne connais pas deja; tu peux lire l'excellent The Daily WTF : http://thedailywtf.com/

----------


## el_slapper

Une bonne partie des codes "hallucinants" ont t faits sous extrme pression. Parfois, certains ont mme l'apparence de code propre, mais, quand on y regarde de plus prs, tout devient incomprhensible. Et on retrouve une doc d'une personne ayant pass une semaine  essayer de comprendre, et dont la conclusion est "l'algorithme semble alatoire".....

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 trs vite, et, en manque d'inspiration, j'ai sorti une usine  gaz(me souviens plus du dtail, juste des horribles imbrications illisibles dans tous les sens).

Aprs, il y a les gnous, gens dous, mais pas pour l'informatique. Et l, on tombe assez vite dans l'horreur. Du genre :


```

```

Et on m'a demand de rajouter 4 lignes de plus. En trois jours. 2 heures plus tard, j'tais pass de 1000 lignes  40, avec un petit rfrentiel des lignes en plus.(et si j'avais pass plus, j'aurais vraiment t un incomptent, je crois).




Cel tant, ce qu'a dit ton collgue, mme 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 prs au besoin du client. J'ai eu un jour  gnrer 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 assiste par des outils, calibrs 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 dsapprises. La solution optimale techniquement doit parfois tre mise de cot(pas toujours, heureusement). Parfois mme pour des raisons de maintenance : il sera difficille de trouver quelqu'un pour maintenir un code trop lgant, alors qu'on trouvera facilement quelqu'un pour dboguer du code bourrin.

----------


## LooserBoy

Aprs un certain nombre d'expriences professionnelles, j'ai dcouvert que si on dispose de temps, on sera beaucoup plus enclin  faire du code lgant.
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 manire de coder la plus rentable en fonction des contraintes poses par le client/l'utilisateur/le chef/le planning.

----------


## souviron34

> Voil mon souci :
> Aprs 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 incomprhensibles et pas du tout optimis !
> 
> Alors, je demande au collgue (sans chercher  provoquer de conflits ds mon arriv) pourquoi il fait comme a.
> La seule rponse a t "Tu sorts tout juste des tudes le jeunes. Dans le monde rel, on ne fait pas les choses de la mme manire !"
> 
> Alors je me suis demand si c'est partout la mme chose. A priori non.
> 
> Mais, je pense que si vous postez quelque truc hallucinant que vous avez pu voir (fonctions  100 paramtres, algorithme de calcul de la longueur d'une chaine de caractre...) on peut rigoler un bon peu.


y'a pas de quoi rigoler..

Mme si cela peut s'avrer faux, la rponse du collgue est (le plus souvent) correcte...

a) le monde rel N'EST PAS une thorie

b) le monde rel a des contraintes

c) quelques fois les problmes sont TRES complexes, et les rsoudre en suivant soi-disant les manires optimales les compliquent (le code, la maintenance, la perspective) plus que ne les simplifient...


J'ai dj fait des fonctions  3000 lignes.... Je n'en suis pas particulirement fier, mais je ne voyais pas (et j'ai eu du temps pour rflchir) de moyen simple de faire autrement sans passer mon temps  jongler avec des sous-fonctions  40 paramtres....


En bref, la thorie et la pratique sont 2 choses bien diffrentes...

----------


## Invit

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 mtier.

Mais ce n'est pas rare non plus de trouver des personnes d'expriences qui vivent avec des procdures codes 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 collgues...

----------


## zaventem

> Mais ce n'est pas rare non plus de trouver des personnes d'expriences qui vivent avec des procdures codes il y a 10 ans mais qui ne sont plus en rapport avec l'volution de la norme et de l'optimisation possible.


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)?

----------


## souviron34

> 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 collgues...


Entiremnt d'accord sur le fait de savoir rester critique...

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 cotent pas cher, ou que les processeurs tournent 1000 fois plus vite  ???

Et alors ??

Est-ce une raison pour ne pas optimiser ???

----------


## LooserBoy

> Mais ce n'est pas rare non plus de trouver des personnes d'expriences qui vivent avec des procdures codes 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 collgues...


Il ne faut pas oublier que maintenir ses codes, afin d'tre  jour au niveau optimisation, est particulirement chronophage.

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.

----------


## Loceka

J'ai relativement peu d'annes d'expriences mais j'ai vu pas mal de codes vraiment moches. Et pourtant j'ai boss (en SSII) uniquement pour des "grands" groupes : Ministres, France Telecom, Airbus, ...

Un bout de code sur lequel un collgue est tomb sur un utilitaire de log qui faisait une surcouche  log4j (projet interne d'un des grands groupes ci-dessus) :


```

```


En gros : une NullPointerException lance dans le logger fait planter tout le programme (donc pas seulement l'utilitaire de log). Assez gnant...

----------


## LeGnome12

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 requtes o il tait utilis des group by  la place d'order by !

Un autre exemple :


```

```

Voil  peu prs comment tait construit l'algorithme que j'ai trouv un jour.
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 requte et quelques jointures (vraiment simple) fonctionne trs bien !!

----------


## Invit

> Il ne faut pas oublier que maintenir ses codes, afin d'tre  jour au niveau optimisation, est particulirement chronophage.


Attention, je ne parle pas de mise  jour du code existant mais d'utiliser des "optimisations" d'un autre ge sur du nouveau code.
En bd, j'ai vu des hint pour "optimiser" des requtes qui n'avaient aucune raison d'tre de nos jours, surtout quand on ne sait mme 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...

----------


## RomainVALERI

En lisant le titre du post j'ai immdiatement pens  a ^^ (pardon  tous ceux qui connaissent dj, a date un peu faut bien avouer. Pour les autres, attention hallucination droit devant  :8-): )

Mais... vu la tournure qu'a pris la conversation je suis peut-tre hors-sujet ?  ::whistle::

----------


## LeGnome12

> Mais ce n'est pas rare non plus de trouver des personnes d'expriences qui vivent avec des procdures codes 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.


Cela reprend trs bien l'ide de mon post.




> Bref, il faut savoir rester critique sur son code et le code de ses collgues...


Je suis totalement d'accord, le code parfait n'existe pas. Lorsque mon collgue pose un regard critique sur mon code, je l'coute et je sais prendre note.



> Ok, un petit jeune qui arrive, il a ses visions utopiques du mtier.


Ca rsume le problme que je rencontre depuis mon arriv dans l'entreprise. Tout ce que je peux dire est faut. Mes formations ne sont pas du tout reconnu ("ho, aujourd'hui tout le monde a le bac S").

Il m'est arriv de prospos des ides qui ont t immdiatement regetes ("C'est compltement stupide !") sans mme m'avoir laiss finir ma phrase. Deux mois aprs, mon collgue trouve l'ide sur un site et remarque que c'est exlent ! Lorsqu'il la partage et que je fais remarqu que c'est ce dont j'avais parl, il rpond 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)

Aprs a, lorsque je trouve des tentatives de rinvanter la roue, je ne peux qu'en rire et je suis dsol si a choque !

----------


## souviron34

> En lisant le titre du post j'ai immdiatement pens  a ^^ (pardon  tous ceux qui connaissent dj, a date un peu faut bien avouer. Pour les autres, attention hallucination droit devant )


 ::ccool::   ::mouarf:: 

Je ne connaissais pas et c'est excellent .. 

Merci  ::D: 







> Ca rsume le problme que je rencontre depuis mon arriv dans l'entreprise. Tout ce que je peux dire est faut. Mes formations ne sont pas du tout reconnu ("ho, aujourd'hui tout le monde a le bac S").


Pv pitchoun !!!  ::mouarf::

----------


## Mdinoc

Je ne comprends pas le dillemme "lgant" contre "simple, direct et robuste". Car pour moi, "lgant" _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 rimplmentation maison d'une fonction de la bibliothque standard comme Convert.ToDouble(). Le test de vrit.

----------


## RomainVALERI

> si tu ne connais pas deja; tu peux lire l'excellent The Daily WTF : http://thedailywtf.com/





> 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 rimplmentation maison d'une fonction de la bibliothque standard comme Convert.ToDouble(). Le test de vrit.


Bon ben on est tous abonns au DWTF ou quoi ?  ::mrgreen:: 

C'est quoi vos ptits noms l-bas, tiens ? (moi c'est toshir0 ^^)

----------


## j.peg

> Il faut parfois choisir la manire de coder la plus rentable en fonction des contraintes poses par le client/l'utilisateur/le chef/le planning.


Pourquoi parfois? qu'est ce qui justifierait de ne pas choisir la manire la plus rentable en fonction des contraintes? 
Qui est prt  payer pour de la sur-qualit?

----------


## LooserBoy

> Pourquoi parfois? qu'est ce qui justifierait de ne pas choisir la manire la plus rentable en fonction des contraintes?


Je pensais, par exemple, aux dveloppements que j'ai pu avoir en tche de fond, parfois en complet sous-marin, pour amliorer le fonctionnement de l'quipe en dveloppant des outils internes, pour remplacer un existant handicapant et fortement ancr dans l'historique de l'entreprise donc ne pouvant pas tre remplac sans avoir une solution "cl en main" et "en bton", ou acqurir la maitrise d'une technologie/technique sans avoir d'application immdiate,...

Il n'y avait pas de contraintes de temps, ni de cahier des charges, un besoin encore mal dlimit,... Se baser seulement sur un concept laisse normment 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 dveloppement.

Tout comme la recherche scientifique, certaines de ces recherches aboutiront sur une exploitation relle et rentable alors que d'autres finiront dans la poussire au fond du placard, pour peut-tre tre ressorties un peu plus tard, le moment opportun...




> Qui est prt  payer pour de la sur-qualit?


[exagration]Combien de dveloppements m'a-t-on confi devant faire certaines choses mais si a pouvait aussi faire le caf et ne pas prendre plus de temps  raliser, ce serait encore mieux...[/exagration]
S'il n'y a pas de surcot, je ne vois pas pourquoi on refuserait systmatiquement la "sur-qualit".

Note: La notion de sur-qualit me pose un problme car je pense qu'on ne dois pas penser  la mme chose.  ::aie:: 

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 rflchi pour que ce soit plus simple ensuite, je vois vraiment pas le problme. Sans tomber dans lexcs et faire dans le trs compliqu sans gagner en simplicit, bien-sr.

----------


## straasha

sinon j'avais rencontr a chez mon ancien client :


```

```



```

```

notez que j'ai simplifi et qu'il y avait en ralit 3 ou 4 sections de codes dans le .h, chacune encadre par une constante diffrente et utilise de cette manire  diffrents endroits du .c.
le pire c'est que a marchait trs bien, par contre pour relire... ::mur::

----------


## souviron34

bah...

Sans doute un test oubli...

 ::D:

----------


## RomainVALERI

D'une manire gnrale, je me demande s'il existe une source d'aberrations logicielles plus terriblement vertigineuse que le Cargo Cult. (pardon pour la source anglophone  ::?:  mais disons en gros pour les non-anglicistes : cela revient  implmenter quelque chose non pour une raison dfinie mais parce que "c'est comme a qu'il faut faire, tout le monde le sait."  ::mur:: )

Tous les langages et les technologies sont concerns car ce n'est pas un problme immdiatemeent technique : il interroge bien plutt les fondements de notre honntet intellectuelle, quelles que soient par ailleurs nos capacits de rflexion pure, de mmorisation, notre force de travail, etc.

----------


## el_slapper

Trs sympa le lien sur le cargo cult. Je crois que 99,99% des gens qui font du JCL(dont moi) font comme a. Enfin, il m'arrive d'exprimenter et de tenter de retirer des trucs juste pour essayer de comprendre, mais en gnral a me pte  la gueule, alors j'en reste au sacro-saint copier-coller-adapter-prier.(Pour ceux qui ne connaitraient pas, JCL est un langage de script pour lancer des batches en environnement mainframe - trs peu, mais alors trs peu permissif).

Bon, je vous rassure, en langage de programmation, je sais quand mme ce que je fais(en gnral).

----------


## RomainVALERI

> Trs sympa le lien sur le cargo cult. Je crois que 99,99% des gens qui font du JCL(dont moi) font comme a. Enfin, il m'arrive d'exprimenter et de tenter de retirer des trucs juste pour essayer de comprendre, mais en gnral a me pte  la gueule, alors j'en reste au sacro-saint copier-coller-adapter-prier.(Pour ceux qui ne connaitraient pas, JCL est un langage de script pour lancer des batches en environnement mainframe - trs peu, mais alors trs peu permissif).
> 
> Bon, je vous rassure, en langage de programmation, je sais quand mme ce que je fais(en gnral).


Je ne le manipule pas moi-mme mais j'en vois de temps en temps au boulot, ouais  :;):  ...eh ben a fout les jetons  ::aie:: 

Courage ^^'

----------


## Benjamin Delespierre

J'imagine que tout le monde ici  fait (ou essay de faire) un site internet dans sa vie de dveloppeur.

Je me rappelle d'un projet que j'avais vu passer en web-agency qui portait sur la refonte de pages cres par un technicien GEII. C'tait purement hallucinant: le code tait du HTML4 ml  du XHTML ml  du PHP bien pauvre compltement en dehors de la ralit du dveloppement web et des standard mais c'tait pas a le pire. 

Le "dveloppeur" qui ne connaissant visiblement ni les tableaux ni le CSS avait tout simplement positionn les lments du layout avec des espaces inscables &nbsp;. Je vous laisse imaginer la tte que a avait ! Surtout quand il essayait d'obtenir un centrage horizontal des lments. Je crois que c'est  ce jour le code le plus moche, le plus mal compris et le plus absurde sur lequel j'ai jamais pos les yeux.

Quand je sais que certains de ces "dvelopeurs" arrivent  se faire payer pour ce genre de travail...  ::cry::

----------


## RomainVALERI

> J'imagine que tout le monde ici  fait (ou essay de faire) un site internet dans sa vie de dveloppeur.
> 
> Je me rappelle d'un projet que j'avais vu passer en web-agency qui portait sur la refonte de pages cres par un technicien GEII. C'tait purement hallucinant: le code tait du HTML4 ml  du XHTML ml  du PHP bien pauvre compltement en dehors de la ralit du dveloppement web et des standard mais c'tait pas a le pire. 
> 
> Le "dveloppeur" qui ne connaissant visiblement ni les tableaux ni le CSS avait tout simplement positionn les lments du layout avec des espaces inscables &nbsp;. Je vous laisse imaginer la tte que a avait ! Surtout quand il essayait d'obtenir un centrage horizontal des lments. Je crois que c'est  ce jour le code le plus moche, le plus mal compris et le plus absurde sur lequel j'ai jamais pos les yeux.
> 
> Quand je sais que certains de ces "dvelopeurs" arrivent  se faire payer pour ce genre de travail...


A tout hasard et trs ventuellement, tu n'aurais pas gard une copie de la source (convenablement anonymise pour protger les coupables bien entendu  :;): ) ?

si oui, partage avec tes amis  ::ange::

----------


## Benjamin Delespierre

Si, je suis sr de l'avoir quelque part (reste  mettre la main dessus...).

----------


## skeud

En premire anne, on avait un putnbr  faire (afficher un nombre sur la sortie standard), ne connaissant pas vraiment le langage C (c'tait mes dbut) j'avais cod 3 fonctions de 25 lignes.

Si je retrouve le code, je vous l'envois, c'tait plutot drole  lire, maintenant que je sais qu'une vingtaine de lignes suffisent ^^

----------


## souviron34

> J'imagine que tout le monde ici  fait (ou essay de faire) un site internet dans sa vie de dveloppeur.


non  ::P: 

Ne pas s'imaginer que le dv informatique passe automatiquement par la case "site web"  ::aie::   ::roll::   ::roll::   ::roll::

----------


## ManusDei

> non 
> 
> Ne pas s'imaginer que le dv informatique passe automatiquement par la case "site web"


C'est dans  peu prs toutes les formations "jeunes" (pas dinosaure ?), le site web en html/php/truc  ::mrgreen::

----------


## souviron34

> C'est dans  peu prs toutes les formations "jeunes" (pas dinosaure ?), le site web en html/php/truc


p'tt ben , mais les jeunes ne sont pas forcment (et vu le nombre certainement pas) la majorit des gens travaillant dans l'informatique... 

Il faut donc admettre que 90% des gens travaillant dans l'industrie n'ont pas foccment suivi a, ce que pr-supposait le post cit..

(_le Web a 15 ans, l'enseignement 8 en tant gnreux). Admettons que ce soit aprs une formation suprieure, et donc en travaillant  partir de 24 ans. Toute personne d'ge suprieur  32 ans n'a donc pas construit de site Web  l'cole. Etant donn que quelqu'un de 32 ans a encore 36 ans  travailler en informatique, a reprsente l'crasante majorit... Prendre comme hypothse de base  "J'imagine que tout le monde ici  fait (ou essay de faire) un site internet dans sa vie de dveloppeur" est donc entirement absurde, puisque nous sommes sur un site de dveloppeurs pour lesquels, pour 36/42 d'entre eux, ils n'ont pas eu de formation  fabrquer un site Web_ )

Alors je sais bien que quand on a 20 ou 22 ans, un gars de 32 ans est un vieux, mais il faut se garder de tomber dans des vidences qui n'en sont pas...

----------


## Benjamin Delespierre

> non 
> 
> Ne pas s'imaginer que le dv informatique passe automatiquement par la case "site web"


Je n'ai jamais dit "professionnellement". Dans mon entourage ou je ctoie des dveloppeurs de tous ages, la plupart on au moins essay de faire un site au moins une fois  :;):

----------


## RomainVALERI

> Alors je sais bien que quand on a 20 ou 22 ans, un gars de 32 ans est un vieux, mais il faut se garder de tomber dans des vidences qui n'en sont pas...


Ah ben merde  ::?:  et dire que j'ai mme pas encore rserv ma place  l'hospice  ::aie::

----------


## ManusDei

> -snip-


C'tait une boutade mon post, fallait pas y voir autre chose. J'ai eu  faire un site en php/html en deuxime anne, et je serais bien incapable de le refaire aujourd'hui.

----------


## souviron34

::mrgreen:: 

ya pas de problmes,mais ya pas de mal  remettre de temps en temps aussi les pendules  l'heure sur certains faits  :;):

----------


## RomainVALERI

> J'ai eu  faire un site en php/html *en deuxime anne*, et je serais bien incapable de le refaire *aujourd'hui*.


T'as l'air d'en parler comme d'un souvenir lointain...


> Age : 26


 ::whistle::  Mais t'as peut-tre pass ton bac  12 ans, hein, j'en sais rien  ::mrgreen::

----------


## ManusDei

C'tait y a 5 ans je crois. Et vu que j'ai pas retouch au php ni au html depuis, oui, c'est loooooiiiinn.

----------


## McM

Voici des exemples de code que je retrouve (sur Oracle - Forms) qui dnotent d'une certaine absence de rigueur de la part de dveloppeurs.

Un test sur date_fin qui sert  rien.


```

```

Une petite affectation pour la route ? Non, mets-m'en 3.


```

```

----------


## RomainVALERI

> Une petite affectation pour la route ? Non, mets-m'en 3


C'est forcment un ancien mcano qui a crit ce code : la premire affectation  "NULL", c'est pour "nettoyer" la variable qui pourrait avoir gard un peu de traces des donnes prcdentes sur les parois intrieures de la variable  ::mouarf:: 

---

Bon, j'ai repens  un truc que je me gardais "sous le coude" ^^'

C'est pas un code hallucinant, donc dsol pour le demi-hors-sujet...
..mais c'est de la BDD, on est quand mme pas dans un domaine lointain.

Vous connaissez les "solutions de developpement logiciel clefs-en-main" ?  ::mrgreen::  (je ne citerai pas le produit pour ne pas "condamner" et j'ai pris garde qu'on ne puisse a priori pas dterminer non plus l'entreprise incrimine ^^)
Oui, comme tout bon dveloppeur, vous avez appris  grincer des dents quand on voque ce genre de choses...  ::roll:: 

QUESTION :
Qu'est-ce qui se passe quand un projet de dveloppement est prvu pour prendre une quipe de 3 dveloppeurs professionnels pendant un an dans des techno classiques, mais qu'on dcide de le faire excuter :

- par un seul gars (mais en conservant la deadline  1 an bien sr  ::aie:: )
- qui n'est pas dans l'informatique (mais qui "aime l'informatique", a change tout !)
- en lui achetant une de ces fameuses solutions "clefs-en-main" qui, entre autres merveilles, proposent de 


> post-gnrer l'analyse UML des donnes de l'application


 :8O:  oui vous avez bien lu, c'est--dire ne faire aucune analyse, raliser tout de suite l'application (c'est--dire : se lancer  corps perdu dans un hommage au shotgun programming), et au final pondre un schma automatique *a posteriori* pour dcouvrir, trop tard, ce qu'on aurait pas du faire comme a*...  ::mur:: 

Qu'est-ce que a donne ?

Ca donne a : ames sensibles s'abstenir (je ne l'ai pas mis directement dans le post parce que l'image est un peu lourde)

Un petit zoom sur le dtail ?

Allez, un dernier dtail pour la route...  ::mrgreen:: 
Parmi les donnes stockes dans la base**, entre beaucoup d'autres choses, des clients et des fournisseurs. Un grand classique, OK. Et comment s'appellent ces tables ?
La table contenant les clients : "FOURNISSEURS"
La table contenant les fournisseurs : "FOURNISSEURS_PIECES"

 ::piou::   ::mur::   ::mur::   ::mur::   ::aie:: 

* si quelqu'un se sent l'envie ou le courage de faire un parallle avec la construction de batiments a pourrait tre hilarant  ::mrgreen::  qui s'y colle ?
** est-il mme besoin de prciser que l'unique exemplaire de la base tait,  l'poque, directement accessible sur le rseau local de la boite, lui-mme totalement non protg, aucune restriction de droits sur la base elle-mme, etc.  ::no::   ::roll::

----------


## souviron34

> Allez, un dernier dtail pour la route... 
> Parmi les donnes stockes dans la base, entre beaucoup d'autres choses, des clients et des fournisseurs. Un grand classique, OK. Et comment s'appellent ces tables ?
> La table contenant les clients : "FOURNISSEURS"
> La table contenant les fournisseurs : "FOURNISSEURS_PIECES"



Voui, un grand classique celui-l  :;): 

Une clbre grande SSII au Canada fait des softs pour (par exemple) des guichetiers sur service  la clientle de l'quivalent d'EDF...

Comment dnommeriez-vous les dtails d'une communication, vous ?

(_style heure, date, en provenance de qui, etc_)


Ben eux c'est "enveloppe"  ::aie::   a va de soi...

Dans une (petite) bote industrielle en France il y a .... quelques annes... Machine mdicale. L'letronicien met le bouton "MARCHE" en rouge, et le bouton "ARRET" en vert  ::calim2::   ::aie::

----------


## Bovino

> Vous connaissez les "solutions de developpement logiciel clefs-en-main"


Hlas, oui...  ::triste:: 

D'ailleurs, mon patron m'a un jour expliqu que leur base de donnes est la meilleure, parce qu'avec elle, on peut appeler tous les champs pareil ce qui permet de rcuprer les rsultats dans un tableau...  ::cry::

----------


## RomainVALERI

> mon patron...


En effet, encore un qui a "les cheveux pointus"  ::mouarf::

----------


## tumoo

Je viens de rencontrer a dans le projet que je reprends



```
<hr style="font-weight: bold" />
```


 ::koi::

----------


## RomainVALERI

> Je viens de rencontrer a dans le projet que je reprends
> 
> 
> 
> ```
> <hr style="font-weight: bold" />
> ```


 ::mouarf:: 

Te plains pas a aurait pu tre pire...

```
<br style="font-weight: bold" />
```

 ::weird::   ::mur::

----------


## Bovino

Tiens... je viens de tomber sur un joli nom de variable...


```
lNbLignesTableauVide
```

 ::mouarf:: 
Dommage que le code ne soit pas comment, a aurait pu valoir le coup !

----------


## RomainVALERI

> Tiens... je viens de tomber sur un joli nom de variable...
> 
> 
> ```
> lNbLignesTableauVide
> ```
> 
> 
> Dommage que le code ne soit pas comment, a aurait pu valoir le coup !


Mais grave...  ::haha:: 

Par chez moi la mode serait plutot aux "anciennes versions" (comprendre par-l les tentatives prcdentes, en mode shotgun programming), assaisonn d'autres choses plus ou moins sans rapport...  ::no:: 


```

```

 ::cry::

----------


## Bovino

Pour la beaut du geste, le contexte dans lequel je l'ai trouve


```
POUR lCpt=1 A lNbLignesTableauVide
```

 ::ptdr::

----------


## RomainVALERI

::piou:: 

...du basic francis ou du pseudo-code ?

----------


## Bovino

WLangage

----------


## RomainVALERI

> WLangage


ARF  ::mur:: 
...le pire c'est que je n'avais pas reconnu... j'en ai dj fait mais on a le choix des mots-clefs FR ou EN avec Windev/Webdev, et l o je bossais tout tait en EN ^^

Mon cerveau a du oprer une auto-lobotomie protectrice pour que je souffre moins  ::aie:: 

Je me rappelle en revanche de ce genre de dclarations dans le code :


```

```

 :8O:  (oui oui a compile trs bien tel quel)

----------


## Ivelios

> maChaine est une chaine.
> monAutreChaine et celleCi sont des chaines.


Ce langage pourrais te plaire  ::mouarf::  Shakespeare Programming Language

----------


## RomainVALERI

> Ce langage pourrais te plaire  Shakespeare Programming Language


Mais alors... a permettrait d'crire des lettres d'amour ??!!  :8O:

----------


## SamSer

Je tombe parfois sur des fonctions qui ont des if dont le contenu dpassent les milles lignes... C'est super rvlateur. Si je dois faire un changement et que a fonctionne, a veut dire que j'ai absolument tout compris au code.

Je tombe galement sur du code dont les commentaires sont faux parce qu'ils ont t copi coll d'un autre code. Du coup, je ne lis plus les commentaires et c'est bien mieux comme a.

Le plus beau reste quand mme le code java qui n'a qu'une main ...

----------


## rawsrc

> Je tombe parfois sur des fonctions qui ont des if dont le contenu dpassent les milles lignes... C'est super rvlateur. Si je dois faire un changement...


M'est d'avis que tu dois sacrment serrer les fesses avant de modifier un truc.  ::mouarf:: 
Pour l'avoir vcu, c'est drlement stressant. Tu tombes sur une classe de 6985 lignes d'un bloc et on te dis y'a un problme dedans... 
Oui c'est--dire ? Le gars te lance un bon courage et se casse. Et l tu peux aller directement poster sur VDM  ::lol::

----------


## SamSer

> M'est d'avis que tu dois sacrment serrer les fesses avant de modifier un truc.


Je bosse en open space donc serrer les fesses, au sens propre ou figur, n'est pas une option  ::mrgreen:: 

Le problme est juste que les codeurs d'il y a dix ans programmaient un peu n'importe comment.D'ailleurs, on me sort souvent comme raison quand je vois un truc dbile:
"Hum, c'est historique et vu que pas mal de morceaux de code se reposent la dessus, on peut pas changer." 

En gros, le type qui a fait a tait nul mais a a t remarqu trop tard. Du coup, on fait avec ... :;):

----------


## el_slapper

> Le problme est juste que les codeurs d'il y a dix ans programmaient un peu n'importe comment.D'ailleurs, on me sort souvent comme raison quand je vois un truc dbile:


Pas plus qu'aujourd'hui. Mais ceux d'aujourd'hui, personne n'a encore remarqu leur code.




> "Hum, c'est historique et vu que pas mal de morceaux de code se reposent la dessus, on peut pas changer."


Hlas souvent vrai. Parfois c'est de la flemme ou de la trouille, mais souvent il est trs dlicat de tout casser pour refaire propre. D'autant plus que chacune des 35000 lignes du programme(j'ai pas dit projet, j'ai dit programme.) a t polie, raffine, corrige et dbogue pendant des annes.




> En gros, le type qui a fait a tait nul mais a a t remarqu trop tard. Du coup, on fait avec ...


Pas toujours(mme si souvent.....). L'auteur des 35000 lignes a plus d'une fois tir la sonette d'alarme pour dire qu'il fallait changer d'architecture avant que le monstre ne le dvore. Mais il n'a pas eu le droit de le faire.....

Enfin, les 35000 lignes taient proprement dcoupes, avec des dcoupages cohrents, des paragraphes assez courts, plein de choses centralises. Mais quand la conception, c'est 72(oui, 72) modules accesseurs  appeler un par un, les rsultats des uns tant les paramtres d'appel des autres, et pas toujours dans le mme ordre, avec plein d'exceptions fonctionelles dans tous les sens, le monstre devient aussi indcoupable qu'indispensable. L'horreur.

----------


## bernard59139

Bonjour

Dans un langage de type script, un prog  a voulu provoquer une attente de quelques secondes. Sans rire, son code:


```

```

La tte des administrateurs quand ils ont constat la chose.

----------


## kolodz

Je crois que le plus beau code que j'ai vue pour le moment et qui tait destin  fonctionn c'est celui-ci :


```

```

Le plus beau pour moi, c'est le extends java.lang.Object.
Il sait o se trouve cette classe, mais personne ne lui a dit que tout le monde en hritait automatiquement.

Cordialement,
Patrick Kolodziejczyk.

----------


## dark.jabberwock

Personnellement, le plus hallucinant que j'ai vu doit bien tre celui-l en Java. 

Ma bote avait rcupr un projet dont une fonctionnalit tait assez lente. 

Voici le code incrimin : 



```

```


Sachant que selectedListToUpdate() est une mthode qui va chercher une liste en cours d'utilisation et que listWhereNavigate() cre une liste trie  partir d'une premire liste.  ::aie::  ::aie::  ::aie:: 

L'amlioration des performances nous a pris beaucoup plus de temps  trouver qu'a effectuer...

----------


## apophyss

Les pires codes que j'ai trouv sont des codes trop _optimiss_ (pourquoi faire clair en 15 lignes quand on peut tout faire en une seule ?).

Je prfre un code moins "puriste" mais facile  lire, bien indenter
(surtout que j'ai rgulirement des dbutants pour m'aider)...

----------


## LeGnome12

Lorsque l'on tombe sur un code o le dveloppeur, faute d'inspiration peut-tre, a utilis le nom de sa femme ou de ses filles comme nom de variable !


```
if ($Alexandra == $Veronique) {...
```

----------


## toblerona

> Lorsque l'on tombe sur un code o le dveloppeur, faute d'inspiration peut-tre, a utilis le nom de sa femme ou de ses filles comme nom de variable !
> 
> 
> ```
> if ($Alexandra == $Veronique) {...
> ```


ou maitresse hein faut pas voir des bisounours de partout  ::D: .

----------


## Max

> Lorsque l'on tombe sur un code o le dveloppeur, faute d'inspiration peut-tre, a utilis le nom de sa femme ou de ses filles comme nom de variable !





> ou maitresse hein faut pas voir des bisounours de partout .


Heureusement que DSK ne fait pas de dveloppement  ::aie::  !

----------


## Gecko

> Heureusement que DSK ne fait pas de dveloppement  !


Lol a donnerai un truc dans ce genre:


```

```

----------


## SamSer

Je viens de tomber sur une fonction dans laquelle plus de 140 variables ont t dclares et qui compte plus de 1700 lignes de code. Who's the big winner ? ::ccool::

----------


## Ivelios

> Who's the big winner ?


Le stagiaire qui sera embauch pour l'occasion pour dbugger le bouzin  ::aie::

----------


## SamSer

Je crois pas qu'ils refileront a  un stagiaire  ::mouarf:: . Ce serait vraiment trop stupide...

----------


## RomainVALERI

> Le stagiaire qui sera embauch *puni* pour l'occasion pour dbugger le bouzin


 ::mrgreen::

----------


## el_slapper

Tiens, trouv hier, un code COBOL de contrle de cohrence de date qui n'a jamais, mais alors jamais t test :

le contrle du sicle est  peu prs cohrent :


```

```

dj, pour le mois, c'est plus difficille de tomber en erreur...


```

```

mais le pompon est pour le contrle de cohrence de la journe : non seulement il est impossible de rentrer dans le traitement d'erreur, mais en plus elle teste le mois au lieu de la journe...


```

```

EDIT : faux en prod depuis 2004.....  ::ccool::   ::aie::

----------


## bernard59139

ca date d'il n'y a pas longtemps, et de mmoire, 


```

```

je n'ai pas gard la requte initiale  parceque cela m'a un "peu" nerv.

----------


## Bluedeep

> je n'ai pas gard la requte initiale  parceque cela m'a un "peu" nerv.


Encore un qui a du scher le cours sur les jointures pendant sa formation (quoique j'ai l'impression que cela devient de plus en plus frquent .....).

----------


## pyros

Quelque part dans les tests unitaires:


```

```

 ::mur::

----------


## Drizzt [Drone38]

Trouv recemment :




```
return FAUX      /* Retourne VRAI */
```

----------


## straasha

```

```

et quand j'ai demand pourquoi ne pas mettre b = a; l'auteur m'a dit "_c'est plus facile  lire comme a_".

----------


## C Blaise

> ```
> 
> ```
> 
> et quand j'ai demand pourquoi ne pas mettre b = a; l'auteur m'a dit "_c'est plus facile  lire comme a_".


Mouais c'est moche alors qu'en crivant comme  c'tait tout de suite plus clair :



```

```


c'est mieux non ?  :;):

----------


## Bovino

Personnellement, je verrais plutt


```

```

On sait jamais !  ::mouarf:: 

EDIT :
Ou mme


```

```

ou encore un mix :


```

```

----------


## Loceka

Au moins faut lui reconnatre que c'est lisible.

Il aurait crit a, 'aurait t plus marrant :

```
b = !a ? a : true;
```

----------


## f-k-z

Ou s'il tait un peu plus tordu encore:


```
b = !a ? a : a ? a : false ;
```

 ::aie::

----------


## ToshiroSama

bool vrai = false;  ::mouarf::

----------


## Cpt Anderson

J'ai vu dans une assez grande entreprise Franaise (que je ne citerais pas), quelque chose du genre:




> Function Mafonction: boolean:
> begin
>    if quelquechose=true then begin
>       traitement
>       result:=true;
>    end else begin
>       traitement
>       result:=false;
>    end;
> ...

----------


## Invit

> J'ai vu dans une assez grande entreprise Franaise (que je ne citerais pas), quelque chose du genre:
> 
> 
> ```
> 
> ```


J'ai dj dbugg une grosse fonction de ce genre assez mal crite et de plus de 1000 lignes avec des tests assez complexes. Aprs des heures et bien des tests pour comprendre j'ai dcouvert le fameux result:=false; dans les dernires lignes du code... Heureusement que le type n'tait plus dans le coin. En tout cas, il n'a pas eu de compliments de ma part, mme s'il tait issu de la promotion de l'anne d'avant.

----------


## transgohan

De si bon matin je vais m'auto flageller...  ::mouarf:: 

Comment tester l'existence de l'index d'un tableau en PHP ? Et plus particulirement quand on tombe de sommeil ?


```

```

 ::calim2::   ::cry::

----------


## Katyucha

Je ne me rappelle que de l'algorithme

Ecrit par un ingnieur 


```

```

Le programme marchait mal... Le super ingnieur comprenait pas pourquoi, c'tait la faute de mon serveur linux (le serveur ftp)

Le stagiaire est arriv, il a regard et a pwned direct l'ingnieur


```

```

----------


## Alvaten

Sur le bout de code d'un collgue tudiant 



```

```

Son explication ... Si je met pas le +0 il passe pas dans le if ... On etait en 1re de license en programmation

----------


## LeGnome12

> Le stagiaire est arriv, il a regard et a pwned direct l'ingnieur


Comme quoi les stagiaires ne font pas que de la m****. Mais c'est trs difficile aprs pour le reconntre de la part des anciens.

----------


## JonathanMQ

```

```

Il n'y a rien aprs la boucle, aucune autre variable que celles-ci sont crer , utilis ou gard..

J'ai beau tenter de comprendre  quoi sa sert et je ne comprend toujours pas,on dirait une mauvaise blague ou un abus d'alcool.

C'est quand mme (6000  7000) x (100  400) traitements  ::(: 

 ::cry::

----------


## Loceka

Meuh non  ::calin:: 

Ca plante avant :


> ```
>    for(int j = 0; j< autreVar.lenght();j++){
> ```

----------


## Robin56

> Ca plante avant :


Voici une illustration parfaite du thorme "Bug is a feature".

 ::dehors::

----------


## RomainVALERI

> J'ai beau tenter de comprendre  quoi sa sert et je ne comprend toujours pas,on dirait une mauvaise blague ou un abus d'alcool.
> 
> C'est quand mme (6000  7000) x (100  400) traitements


As-tu envisag la possibilit que ce soit tout--fait volontaire _pour perdre du temps_ ?  ::aie::  Il me semble qu'on peut ressortir nos vieux classiques ^^

----------


## JonathanMQ

@Loceka : Faute en recopiant le code, je n'ai pas mis intgralement le code, je ne peux pas, dans mon travail, copier des bouts de code intgralement ou en partit  ::): 

RomainVALERI : Ce serait tonnant car sa ne servirait  rien mais ... qui sait !

----------


## Bovino

> J'ai beau tenter de comprendre  quoi sa sert


Juste  aller voir le boss quelques semaines aprs en ayant supprim les boucles pour lui dire :



> Bon, je suis repass sur le code de untel (tout le monde aura oubli que untel, c'est lui...) et je l'ai lgrement optimis, maintenant, a dpote...


 ::aie::

----------


## RomainVALERI

> RomainVALERI : Ce serait tonnant car sa ne servirait  rien mais ... qui sait !


Comme dit Bovino, a peut tre _trs_ "utile" au contraire ^^ (c'tait d'ailleurs exactement la situation dans l'histoire que j'ai mise en lien  :;): )

----------


## JonathanMQ

> Comme dit Bovino, a peut tre _trs_ "utile" au contraire ^^ (c'tait d'ailleurs exactement la situation dans l'histoire que j'ai mise en lien )



Il n'y a rien qui justifie ce bout, la classe en question sert  extraire des champs d'une table ..... pour un affichage web. Aucune raison de ralentir l'affichage d'une page web  :;): 


@Bovino : On ma dit de laisser sa la, parce que tout marche en ce moment donc on touche  rien  :;):  Heureusement, "untel" c'est un trs mauvais consultant d'une firme quelconque qui a charg le gros prix pour faire un travail de merde....

----------


## Bovino

> Aucune raison de ralentir l'affichage d'une page web


Oui, enfin, il n'y a pas non plus de raison de prendre ma remarque au srieux !  ::mouarf:: 

C'tait une remarque humoristique...

----------


## Invit

Je me suis pli en deux en lisant a. Trs drle comment il est arriv  dire que _coder proprement c'est le mal, a augmente la pollution._

----------


## nostrora

M'ouai..

----------


## mordrhim

> Je crois pas qu'ils refileront a  un stagiaire . Ce serait vraiment trop stupide...


Que tu crois, j'ai programme qui a t dvelopp par un stagiaire qui ne connaissait pas le langage objet et fan de naruto.
Le programme est une application qui a t utilis tant bien que mal par d'autres applis.

Donc dbugger un code avec : 
- des variables du genre "Sharingan", "kagebushin" "Kioshugi" "Kyuubi" et autres .. 
- Du code qui a t copi coll d'un autre programme internet avec des commentaires du genre "Je sais pas  quoi a sert mais sans, a marche pas" ou encore "TODO : Rendre propre le CP/CC" 
Je sens que a va tre drle.

----------


## Anarchy64

Eh ben il y en a pas mal de kaudes bien crades par ici..!
Le pire que j'ai rencontr c'tait quand je bossais avec un ancien demomaker (les gars qui te font des miracles avec un pc puissant et 64 ko), du coup pour compresser ses programmes il avait sa technique secrte qui consistait  utiliser des retours inline sur 3 lignes pendant tout le code. Ca donnait une bouillie du genre :



```

```

----------


## Bluedeep

> Eh ben il y en a pas mal de kaudes bien crades par ici..!
> Le pire que j'ai rencontr c'tait quand je bossais avec un ancien demomaker (les gars qui te font des miracles avec un pc puissant et 64 ko), du coup pour compresser ses programmes il avait sa technique secrte qui consistait  utiliser des retours inline sur 3 lignes pendant tout le code. Ca donnait une bouillie du genre :


Dsol, mais on arrive mme pas  comprendre de quoi il est question.

Quel est le but de la manoeuvre ici  ? et je n'ai pas la moindre ide de ce que peut bien tre un "demomaker qui [fait] des miracles avec un pc puissant et 64 ko". Je suppose ne pas tre le seul.

----------


## pmithrandir

Les gens qui codent en 64ko, c'est souvent des petits executables qui te montrent des "videos" 3d ainsi que des sons assez bien foutu, le tout dans 64ko.

C'est des dfi de programmations. Sur google on en trouve certains, entre autre, je me souviens d'un chateau vachement sympa.


Pour la boucle d'assurance, je comprends tout a fait.

Vous n'avez jamais vu un endroit dans le programme qui va bugg. Vous le savez d'exprience, vous savez que les consquences seront dsastreuses si vous ne faites pas au plus vite un refactoring (du genre perte irrmdiable de donnes sensibles) mais quand vous le dites a votre chef(N+1), il vous sort : 

Ah oui, on ajoute ca dans la liste a faire, catgorie refactoring, priorit "low" (WTF  ::cry:: )
Tout btement parce que son chef(N+2) lui a dit, je veux la jolie fenetre tout de suite.

Maintenant, si discrtement vous introduisez une jolie boucle qui bouffe juste du temps, tous les jours vous la ralentissez un peu plus.

Votre N+1 vient vous voir trs vite pour des problmes de performance vachement handicapant, que n+2 lui a demand de rgler au plus vite.

Il ne reste plus qu'a lui dire : "Je vous avez parl d'un refactoring dernirement, je pense que c'est les premiers signes qu'il faut faire ca en urgence".

Et voila votre tache qui repasse de "low" a "super mega high y'a pas plus haut" en 30 secondes.

Bref, la boucle infinie, c'est une arme anti chef dbile.

----------


## Anarchy64

> Dsol, mais on arrive mme pas  comprendre de quoi il est question.


Pour la clart du code, je m'tais pas relu et c'est effectivement assez difficile  comprendre, n'ayant fourni aucune explications (j'aurais peut-tre pas d poster  3 heures du mat' aussi) et je m'en excuse; je vais refaire un paragraphe explicatif.




> et je n'ai pas la moindre ide de ce que peut bien tre un "demomaker qui [fait] des miracles avec un pc puissant et 64 ko". Je suppose ne pas tre le seul.


Moui bon faut pas pousser non plus, tapes demomaker sur google tu as des dizaines de rponses pertinentes. 
Voici quand mme un lien qui rsume assez bien la demoscene (le concept) et le lien d'une demo 64k trs impressionante.


Reprenons ce code et tout ce qui va avec...

Dj la fonction inline : c'est une directive du langage C++ que l'on peut placer devant une fonction. Exemple :



```

```




```

```


Quel est son but ? Et bien ds que le compilateur convertira le code source en binaire, au lieu de compiler la fonction dans un coin de l'excutable et de faire un renvoi vers cette fonction  chaque fois qu'elle est appele (comme a se passerait dans le premier code); la fonction sera recompile  chaque fois  l'endroit o elle est appele.
Si vous n'avez toujours pas compris, allez voir ici, le gars est assurment beaucoup plus pdagogue que moi  ::mouarf::  .

Quel est son utilit ? Pour un programme de base, il n'y en a pas vraiment, mais pour les demomakers, il y en a une de taille.
Prenons une des bases de la demoscene : faire le plus de choses en le moins d'espace possible. Et bien avec cette fonction, on pourrait croire que l'excutable prendrait plus de place tant donn que la fonction est recompile  chaque fois qu'elle est appele; le truc c'est que les demomakers utilisent des compresseurs trs puissants tels que kkrunchy, et si la fonction est rpte plusieurs fois, alors autant de fois kkrunchy la compressera.

Comprenez-vous dj un peu mieux ? 
Revoici le shma du code crit plus lisiblement :



```

```

----------


## Code62

```

```

casting de string en strings, au cas o l'interprteur php dciderait d'ignorer les quotes ?

et plus bas:


```

```

...ok.  ::cry::

----------


## MiaowZedong

> ```
> 
> ```
> 
> casting de string en strings, au cas o l'interprteur php dciderait d'ignorer les quotes ?


Tu n'y es pas; dans un futur standard PHP, les quotes pourraient avoir une autre signification: par exemple dnoter un int. L le code de ton collgue resterait valable! ::pastaper:: 

En plus, comme chacun le sait, l'optimisation prmature est la source de tous les maux: viter le cast sur une variable de type connu serait une optimisation, donc ton collgue a fait des casts inutiles pour s'pargner les maux d'une optimisation prmature  ::pastaper::

----------


## Bousk

Une fonction pour supprimer d'un vector selon un paramtre :


```

```

 ::aie::

----------


## Loceka

Un code sur lequel je viens de tomber dans un fichier XSL (pour info, c'est le seul template prsent dans le fichier) :



```

```


Apparement le dveloppeur devait tre indcis sur la langue  utiliser pour les variables...

----------


## a.rami

dans le code d'un collegue :



```
 select id_coli into v_exsist_init from colis where id_coli = null; :massacre:
```

----------


## r0d

Je suis tomb sur une fonction pas mal l'autre jour:

```

```

H oui, ce n'est qu'une seule fonction.
Et je dois maintenir a...  ::cry::

----------


## shadowmoon

> H oui, ce n'est qu'une seule fonction.
> Et je dois maintenir a...


a va, j'ai connu pire, une application C#, d'environ 5 000 lignes, o *TOUT* tait dans le main, sans commentaires et avec des noms de fonctions et de variables du style var1, var2, i,j,k ... 


En survolant vite fait ton exemple de code, il me semble que les commentaires ont l'air utiles et les variables  peu prs correctement nommes.

Aprs, il faut que je le lise plus attentivement pour voir s'il aussi comprhensible qu'il le parait.

----------


## r0d

C'est vrai qu'il y a pire, mais tout de mme:
- une fonction template de plus de 300 lignes (l'analyseur syntaxique n'y a pas survcu! Et SRP dans tout a? Et va implmenter des test unitaires l-dessus...)
- des classes dclares et implmentes au sein de la fonction (dans une boucle, qui plus est)
- un mlange de C et de C++ (du malloc, du free, du template, du printf, du cout...)
- openMP utilis sauvagement en plein milieu (ce qui rend illusoire toute tentative de profiling)
- des pointeurs dans tous les sens avec des drfrencements qui peuvent pter n'importe quand.

----------


## ch0c4

Bonjour, vu aujourd'hui sur un code dat de 2010


```

```

Si on peut pas l'ouvrir il y'a vraiment un problme !!!!! ^^

----------


## Bluedeep

> Si on peut pas l'ouvrir il y'a vraiment un problme !!!!! ^^


Pas compris ...

----------


## transgohan

> Si on peut pas l'ouvrir il y'a vraiment un problme !!!!! ^^


C'est tout  fait possible, il suffit que le programme qui excute ces lignes n'ai pas l'autorisation de faire un chmod sur ce fichier et qu'il n'ai pas non plus l'autorisation de lecture/criture dessus pour qu'on rentre dans le die().

----------


## zecreator

10 GOTO 10

----------


## Invit

> a va, j'ai connu pire, une application C#, d'environ 5 000 lignes, o *TOUT* tait dans le main, sans commentaires et avec des noms de fonctions et de variables du style var1, var2, i,j,k ...


Sans avoir les 5000 lignes dans le main, voici le code du premier interprteur J (J est un descendant d'APL). C'est du C crit en 1989, par Arthur Whitney (aujourd'hui patron de Kx systems)

C'est un peu dstabilisant pour un moderne,  cause de l'absence de blancs et de retours chariot (je suppose qu'on ne mesurait pas encore la productivit en lignes de code), et parce qu'on n'a pas de fonctions en anglais de cuisine dont les noms sont plus long que le code qu'elles contiennent. Mais c'est extrmement bien fait.



```

```

Comme quoi, c'est pas parce que c'est hallucinant que c'est mauvais, ni parce que c'est clair que c'est correct...

http://www.jsoftware.com/jwiki/Essays/Incunabulum

Francois

----------


## Mdinoc

a parait bizarre quand mme de programmer comme a si on ne cherche pas  concourir pour l'IOCCC....

PS: a m'a aussi l'air mauvais, a utilise gets et semble allouer de la mmoire sans jamais la librer.

----------


## Invit

> PS: a m'a aussi l'air mauvais, a utilise gets et semble allouer de la mmoire sans jamais la librer.


Ah oui? Alors c'est sur que a ne doit pas tre bon, alors...

La lune... le doigt...

Francois

----------


## v4np13

Le code d'un collgue en java : 



```

```


Quand j'ai vu a..  ::weird::   ::no::   ::arf::   ::sm:: 

C'est quand mme pas compliqu de faire : 


```

```


Pourquoi toujours vouloir rinventer la roue ???? Pourquoi ?????  ::cry::

----------


## Jiheme44

utiliser la sortie d'erreur (STDERR) pour crire des messages dans le log 'normal' via les redirections (appel de perl  partir de ksh), est ce logique ?  :8O: 

peso, je trouve a hallucinant. En tout cas, ce n'est pas ma faon de penser.

----------


## nfluch

> Le code d'un collgue en java : 
> 
> 
> 
> ```
> 
> ```
> 
> 
> ...


je fais pas de java mais je suppose que a doit imprimer tout le stacktrace et non juste le dernier message comme avec getMessage() ?

----------


## Mdinoc

Si c'est log4net/log4j, passer l'exception en second paramtre loggue l'exception complte si la lib est correctement configure.

----------


## ManusDei

> je fais pas de java mais je suppose que a doit imprimer tout le stacktrace et non juste le dernier message comme avec getMessage() ?


J'ai fait peu de java, mais de mmoire les deux font la mme chose.

----------


## v4np13

> je fais pas de java mais je suppose que a doit imprimer tout le stacktrace et non juste le dernier message comme avec getMessage() ?


Il fait en 3 lignes "difficiles"  comprendre, ce que log4j fait en une ligne. log.error(string, throwable) prend un message et l'exception. Dans les logs, on a le message et la stacktrace complte.

Il y a pire avec : 


```
log.error(e.toString);
```

qui n'affiche pas de stacktrace voire aucun dtail sauf l'adresse mmoire de l'exception (cela dpend de la dfinition de l'exception). Trs utile en cas de debug.  ::mouarf::

----------


## nfluch

> Il fait en 3 lignes "difficiles"  comprendre, ce que log4j fait en une ligne. log.error(string, throwable) prend un message et l'exception. Dans les logs, on a le message et la stacktrace complte.
> 
> Il y a pire avec : 
> 
> 
> ```
> log.error(e.toString);
> ```
> 
> qui n'affiche pas de stacktrace voire aucun dtail sauf l'adresse mmoire de l'exception (cela dpend de la dfinition de l'exception). Trs utile en cas de debug.


donc c'est vraiment du vouloir faire compliqu pour montrer  :;):

----------


## fregolo52

> Il y a pire avec : 
> 
> 
> ```
> log.error(e.toString);
> ```
> 
> qui n'affiche pas de stacktrace voire aucun dtail sauf l'adresse mmoire de l'exception (cela dpend de la dfinition de l'exception). Trs utile en cas de debug.


Sauf que ...
J'ai fait trs peu de Java, et afficher la stack a aide pas mal!

----------


## Gama

jusqu'au jour o il regarde ton code et comprends que tu le fais exprs  ::D:  ::?: 



> Les gens qui codent en 64ko, c'est souvent des petits executables qui te montrent des "videos" 3d ainsi que des sons assez bien foutu, le tout dans 64ko.
> 
> C'est des dfi de programmations. Sur google on en trouve certains, entre autre, je me souviens d'un chateau vachement sympa.
> 
> 
> Pour la boucle d'assurance, je comprends tout a fait.
> 
> Vous n'avez jamais vu un endroit dans le programme qui va bugg. Vous le savez d'exprience, vous savez que les consquences seront dsastreuses si vous ne faites pas au plus vite un refactoring (du genre perte irrmdiable de donnes sensibles) mais quand vous le dites a votre chef(N+1), il vous sort : 
> 
> ...

----------


## Jiheme44

pas un code hallucinant, mais un retour de compilation trs informatif :



(hp exstream dialogue v6)

----------


## Iradrille

Dans une vue (rails)


```

```

Ca m'a bien fait rire de voir a, et a fait une semaine que c'est comme a  ::aie::

----------


## LeGnome12

En 2013 avoir un intranet qui tourne sur un serveur php 4.06
Et ne surtout pas le faire voluer de version (pas le temps pour assurer la compatibilit).

----------


## tchize_

Quelqu'un a du oublier d'inviter un dveloppeur durant le brainstorming pour choisir cette url


http://www.tsa.gov/tsa-pre✓


Ca doispas tre facile  dicter au tlphone  ::aie::

----------


## LeGnome12

Une table qui a pour champs :
total2005, total2006, total2007, total2008, total2009, total2010, total2011, total2012, total2013

Chaque annes, un champ doit tre ajout (cette anne, les champs ont t crs jusqu'en 2018. Soyons Fou !).

Regardons maintenant les donnes : Ho, une seule ligne de donnes. Oui une seule et unique ligne de donnes ! Contenant chacune la valeur de total2005, total2006...

 ::mur::  !

----------


## r0d

Je viens de tomber sur un commentaire. Quelques lignes au dbut d'un fichier d'environ 3000 lignes de codes:




> This layer is the oldest legacy part of [...]. Its an old school c-style code, where runtime speed is preferred rather than any other consideration, such as explicit variable names or code organization. 500+ lines functions seemed to be the rule, for example. Other example, a variable with more than 2 chars seemed to be an over fitting choice.


 ::mouarf:: 

J'aime bien le "un autre exemple, une variable avec plus de 2 caractres semblait tre un choix trop prcis".

----------


## tchize_

vu aujourd'hui dans un sample dont je tairais l'origine:



```

```


Les constantes et noms de mthodes remplacs par respect pour l'auteur.

----------


## souviron34

> Je viens de tomber sur un commentaire. Quelques lignes au dbut d'un fichier d'environ 3000 lignes de codes:


Moi j'aime bien le :




> Its an old school c-style code, where runtime speed is preferred rather than any other consideration


Donc, OK... On s'en fout royalement du "runtime speed"...  ::aie:: 

C'est beau la throrie...  ::): 

Comme dit la signature d'un contributeur/modrateur actif sur le forum algorithmes :


_Algorithme: mhode complexe de rsolution d'un problme simple_

----------


## r0d

Je viens de tomber l-dessus:


```
sv.push_back(new TypeModalities(2000));
```

Dj sympa le nom de variable "sv" (c'est un vector qui contient des IndexedRadixTree*, TypeModalities tant le type d'un paramtre template). Et puis je me suis demand, mais qu'est ce que c'est que ce chiffre, 2000, qui sort de nulle part. Je vais voir dans le constructeur de IndexedRadixTree, et l, c'est le drame:



```

```

Ce n'est pas bien grave, mais c'est quand-mme nervant ce genre de truc...

----------


## souviron34

> Ce n'est pas bien grave, mais c'est quand-mme nervant ce genre de truc...


 ::mrgreen::  Sait-on jamais ??? Peut-tre qu'un jour on aura besoin d'un paramtre d'entre ?? Faut tre prvoyant, quoi....  ::aie::

----------


## transgohan

> Ce n'est pas bien grave, mais c'est quand-mme nervant ce genre de truc...


On a le mme genre de chose dans nos codes.
Mais on a le mrite de les nommer correctement : _provision_.
Car une provision n'est jamais inutile.  ::):

----------


## LeGnome12

Avoir un code php est des TRUE,  FALSE, Case, Switch, Function, Class, True, False... (avec cette casse l !).
Pour que tout a fonctionne, le case sensitive a t dsactiv dans le config du php sur le serveur IIS.

----------


## ludojojo

Deux bout de code dans une application SharePoint :


```

```

itration sur pas moins de 400 items...

Et celle-ci est magnifique aussi, le dveloppeur a cr une fonction qui prend en paramtre un SPWeb, la premire chose qu'il fait dans sa fonction c'est : 


```

```

bon jusque l pourquoi pas... Mais ensuite je tombe sur :


```

```

Pour ceux qui ne connaissent pas SharePoint, il vient juste de recrer un contexte  partir de l'ID du contexte courant...  ::vomi::

----------


## Rayek

Dans un soucis d'conomie de variable j'ai vu cela dans un des codes que je maintient 



```

```


Ca fonctionne mais quand on tombe sur ce genre ce chose a fait un peu peur  ::mrgreen:: 

Une autre marrante, un collge qui ne voulait pas qu'une partie du code soit trait, a mis (Bien sur il a jamais enlev ce code  ::aie:: )



```

```

----------


## tchize_

> Ca fonctionne mais quand on tombe sur ce genre ce chose a fait un peu peur


Ce qui fait peur, c'est que a fonctionne  ::aie:: 

Sinon pour l'autre, c'est le classique du code de dbogage qu'on a pas envie de commenter  ::):

----------


## Iradrille

> Une autre marrante, un collge qui ne voulait pas qu'une partie du code soit trait, a mis (Bien sur il a jamais enlev ce code )
> 
> 
> 
> ```
> 
> ```


C'est pour a qu'on  inventer svn / git et autres  ::): 

Mais j'avoue que a m'arrive aussi de faire a, pour tester une autre implmentation, en gardant l'ancienne "au cas o"  ::aie::

----------


## pmithrandir

> C'est pour a qu'on  inventer svn / git et autres 
> 
> Mais j'avoue que a m'arrive aussi de faire a, pour tester une autre implmentation, en gardant l'ancienne "au cas o"


C'est assez bizarre comme facon de faire je trouve...
pkoi ne pas tout simplement commenter le code dans ce cas l ?

----------


## transgohan

> C'est assez bizarre comme facon de faire je trouve...
> pkoi ne pas tout simplement commenter le code dans ce cas l ?


Quand le code fait plusieurs centaines de ligne et que tu as dedans des commentaires de type /* */ tu ne peut pas le commenter facilement.
En C cela m'arrive du coup de jouer avec un #if 0 pour obtenir le mme rsultat quand il n'y a pas de gestionnaire de version derrire le projet.

----------


## r0d

C'est pour ce genre de choses qu'un bon IDE est apprciable  ::): 

par ex. ctrl K + ctrl C sous visual studio et a commente tout, et a gre les /* */ et  autrs // qu'il y a dans la slection

----------


## tchize_

parfois tu as simplement envie de t'assurer que le code comment compile toujours dans le futur.

Un exemple: dans une appli graphique, j'ai un bout de code de debuggage qui permet d'afficher un fil de fer avec les vecteurs orthogonaux  chaque point de contrle. Quand j'active a l'application rame comme un fou mais parfois j'en ai besoin pour tester une nouvelle features.

La mise en svn puis delete n'est pas une option: j'ai besoin occasionellement de le ractiver
La mise en commentaire me fera chier pour deux raison: c'est un gros gros bloc de commentaire  se tapper (et  lire pour voir si c'est du code comment ou un commentaire informatif) et ca ne garantit pas que ca compilera dans le futur. Enfin, le futur dev devra savoir jusqu'ou il dois dcommenter...
Une variable de debug serait une option plus propre, mais c'est du boulot de la rajouter et de ramener cette variable de config au fin fond de la mthode de dessin.
Le if(false) m'a pris 10 secondes  faire  ::mouarf::

----------


## r0d

Si le reste du code est propre, on peut se permettre ce genre de trick de temps en temps.
Le problme c'est si a devient systmatique; si on choisi la solution fainant/crade  chaque fois qu'on touche au code, a devient vite le bordel  ::):

----------


## lerombasien

pour rester sur le sujet :

dans les annes 80, singer fabriquait des ordinateurs et, en voulant installer une console a distance, impossible de faire fonctionner. le code source de l'os tait disponible et en plongeant dedans, il y avait un test 
si 1 = 0 on continue, sinon on abandonne. l'anomalie remonte aux USA les a rendus heureux !!!

----------


## tchize_

N'importe quoi l'image d'intro

j'aurais crit




```

```


Et je suis sur qu'on pourra faire pire avec java 8  ::):

----------


## kolodz

Je viens de retrouver une classe utilitaire dans un framework proprio :


```

```

Pas sr que a me soit utile.

----------

