lo2k


Weblog

11/02

2010

5 Comments

4 excuses de collègues pour faire du code spaghetti

Vous avez un regard terrifié ! Les yeux en sangs, vous venez de voir 12 000 lignes de codes sans commentaire dans une classe statique. Vous demandez des explications ! Pourquoi ? Pourquoi tant de haine ?

Voici les “réponses” les plus fréquentes.

Pourquoi changer ? ça marche

Pourquoi changer ? C’est une bonne question et elle n’est pas si stupide que ça.

Vous avez déjà vu un ou deux stagiaires qui ont voulus optimiser un code backdoor qui n’est quasiment jamais appelé. Passer de 513ms a 437ms sur un code qui est appelé dans un CRON tout les mois… ça n’a pas forcément un grand intérêt. Mais il faut se poser quelques questions:

  • Dois-je modifier ce code souvent ?
  • Ce code est-il appelé dans une boucle haptique a 1000Hz ?
  • Est-ce que ma fonction ressemble plus a une boite noire qui des fois me retourne des résultats “mystique” ?

Si vous avez répondu “oui” a une seule de ses 3 réponses, OUI ! Il faut changer !

solution: Expliquez que la machine à vapeur ça marche aussi et pourtant…

On avait pas le temps

C’est la vie ! Dans une boite (une vrai comme nous), on nous demande des trucs et on a pas le temps de faire comme à l’univ !

HAHAHAHA, celle là me fait bien rire :) . On a pas le temps de reviewer un peu son code mais on a la temps de rester 3 jours jusqu’a minuit juste avant la prod ! Là on peut bosser !

Le temps ça se trouve. La plupart des entreprises devrait fixer un créneau horaire pour revoir et remanier le code existant. Le temps passé a faire cela serait largement gagné sur les phases de debugging.

solution: expliquez que ranger sa chambre tout les jours c’est moins chiant que de le faire une fois par an juste avant que maman passe en foutant tout sous le lit.

C’est pour optimiser

Il y a un petit coté “humain” derrière cette excuse. “J’aurais bien voulu mais c’est pas possible”.

Tout d’abord si la personne qui vous dit ça fait autre chose que du C ou C++ vous pouvez directement lui jeter des pierres. On “optimise” pas un code PHP ou Ruby en faisant du code crade. A partir du moment ou on ne sait pas comment l’interpréteur/compilateur fonctionne derrière. Le fait de tout mettre dans une fonction ne vous fait faire que des économies de bout de chandelles.

Le soucis d’optimisation pouvait s’expliquer encore il y a quelques années avec des machines plus lentes mais maintenant les machines sont suffisamment puissante.

Les solutions actuelles pour gérer de gros volumes de données se font surtout par des clustering/cloud car les processeurs ne montent plus en puissance mais en nombre. Il y a de forte chance pour qu’un code “optimiser” à l’ancienne ne puissent pas être réutiliser sur un cloud.

solution: proposez de multi-threadé le code comme ça il sera encore plus performant ;). Les autres dev n’auront plus l’excuse de l’optimisation.

C’est trop compliquer, on peut pas faire autrement !

“Il y a trop de vérification a faire, on a besoin de ces 34 if/else imbriqués”.

Souvent les collègues se cachent derrière l’excuse du “trop compliqué”. C’est vrai que c’est facile. Le code est compliqué a lire on en déduit que ce que le code fait est… compliqué.

Si je pars sur l’exemple du “34 if/else”, on peut se poser la question “si c’est une vérification, ce code ne devrait t’il pas être déporté dans une classe Validator ?”. Sémantiquement, les “34 if/else” sont-il dissociable ?

Un problème infiniment complexe n’est que la somme d’une infinité de problème simple

J’aime me dire que tout problème aussi compliqué soit-il peut être résumé par une somme de problème simple à comprendre.

Partant de ce principe, le code aura surement beaucoup plus de classe et pourra peut être effrayé des personnes de passé d’une classe statique a une douzaine de petite classe mais pour autant le code sera beaucoup plus simple et raisonné.

solution: expliquez qu’un code complexe peut être subdivisé en code plus simple.

Quelques “autres” excuses bidons envoyés par twitter ;)

  • cette appli a pas loin de 7 ans, on va pas s’amuser à tout reprendre maintenant !
  • mais si, c’est bien codé, toi tu sais !
  • w3c c’est pour les low
  • je mets pas de commentaire parce que j’ai peur de pas comprendre ce que j’ai voulu dire

N’hésitez pas a en laisser en commentaire ;)

  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • TwitThis
  • StumbleUpon
  • Technorati

  1. 5 reponses sur “4 excuses de collègues pour faire du code spaghetti”

  2. Par Reppa le 11/02/2010

    Excellent je suis mdr


  3. Par Flo le 11/02/2010

    y a d’autres problèmatiques aussi..; je le vois en tant que chef et projet : je ne peux pas relire tout le code de mes développeurs …
    je ne fais que tester…
    et là rien que la semaine dernière, je suis tombée sur un truc ignoble, je te le refais. le mec, (bac+5, 4ans d’ex comme moi) il a écrit ca en php :

    if (($var1==”toto”) && ($var2=”tata”)){
    $mon_nom=”toto – tata”;
    }
    elseif (($var1==”toto”) && ($var2=”titi”)){
    $mon_nom=”toto – titi”;
    }
    elseif (($var1==”tutu”) && ($var2=”titi”)){
    $mon_nom=”tutu – titi”;
    }
    elseif (($var1==”tete”) && ($var2=”titi”)){
    $mon_nom=”tete – titi”;
    }

    alors j’ai quand même connecté mes deux neurones, et il balaye tous les couples possibles de $var1 et $var2 (qui sont pré-définis et contrôlés bien en amont dans le process métier de l’appli), mais il semblerait qu’un $nom=$var1.” – “.$var2; c’était pas naturel pour lui….

    qu’est ce que tu veux faire contre ca ?


  4. C’est pas sale, c’est du Perl ! Et je ne vois pas pourquoi je commenterai cette invocation vaudou que tous les mongueurs connaissent.

    A l’opposé du spectre, il y aussi l’orienté-objet poussé trop loin où l’accès à un pauvre attribut requiert l’appel à 5 ou 6 fonctions (dont le nom est d’au moins 15 à 20 caractères).


  5. Flo: Le chef de projet est là pour filé des bons coups de baton quand il faut :) . Là il y a de quoi lui en filer 2 ou 3 ;)

    Guiguix: tout a fait d’accord. Les générateurs MDA qui te font 25 classes pour sauvegarder un objet en bdd me font rire aussi ;)


  6. Par Flo le 11/02/2010

    bah disons que je tape sur des trucs encore plus grave que ca, comme des trucs pas testés et que je suis fatiguée de taper car j’en ai encore d’autres des exemples dans le genre, ca c’est le plus récent !


Post a Comment


Exponential Fault is proudly powered by WordPress
Entries (RSS) and Comments (RSS). Theme by Jérôme Wax
Contact