56Fermer58
squalylLe 25/07/2013 à 23:42
cette après midi en ayant une nouvelle fonctionnalité à implémenter, on a vu des trucs étranges dans le code à modifier, donc on a voulu faire un peu de ménage dans le code, démarré par moi il y a 3 ans, puis confié à une collègue (partie depuis) pour qu'elle le reprenne et le continue:

class chose {
  private int fvalue;
    public void setvalue(int value) {
    value = value;
  }
}


une classe remplie, en gros de :
class chose {
  private int fvalue;
    public void setvalue(int value) {
    fvalue = value;
    autreclasse.setvalue(value);
  }
  etc etc
}


des chaines d'appels qui enchainent les conversions entre byte[] et String à coup de bin2hex et hex2bin, au moins 4 à la suite à travers les différents appels. Et bien sûr, sans test de nullité nulle part.

une réimplémentation d'une méthode bin2hex bien optimale à coup d'appels à la classe Formatter

en inlinant du code de classes inutiles, on a réussi à générer un stack overflow à cause un getinstance() de sigleton dont le constructeur privé fait appel à un autre getinstance dans un autre singleton, lui même faisant appel au premier. C'était masqué à cause d'une instruction indispensable mais commentée (on comprend pourquoi).

On a plein de form générées par netbeans et remplies de code correspondant aux évènements, et puis j'ai découvert tout un tas d'appels à des classes machinchouettecontroller qui ne font que forwarder des appels

et le mieux, notre produit a des plugins, qui reposent sur une api à base d'interfaces dont les implémentations se trouvent dans le code principal. Eh bien quand elle a eu besoin de nouvelles fonctionnalités, au lieu d'ajouter des entrées dans l'interface, elle a juste fait une méthode getotherfunctions() qui renvoie directement une implémentation de ces fonctions (implémentation stockée dans le projet API directement, pas dans le code principal) ce qui lui a demandé des tonnes de classes proxies mal écrites, et des modifs cheloues un peu partout.

Et bien entendu, quand elle a fait tout ça, elle ne m'a posé aucune question d'architecture, en me disant "oui oui" chaque fois que je lui demandais si elle s'en sortait avec l'architecture de ce que j'avais écrit avant.

Résultat, j'ai l'impression de voir un tapis volant qui cache un gros tas de merde et que mon projet a été amélioré graphiquement, mais niqué en interne. Je précise que là où on bosse on a chacun un projet, on est censés être indépendants, et que personne n'a de relation de garde chiourme avec les autres développeurs. On lui a fait confiance après qu'elle aie réussi quelques trucs corrects, mais non, ce truc là, elle l'a bien foiré, et elle s'est surtout posé aucune question quant a la complexité et à la torducité de ce qu'elle écrivait.

Résultat, 2h de refactoring cette aprem pour virer un tas de classes inutiles, bon c'est pas perdu, ça a permis au nouveau collègue de bien comprendre le genre d'archi du code qu'on attend, et ce qu'il faut pas faire grin Lui est bien plus compétent, je sens en codant en tandem qu'il comprend ce qu'il voit, c'est marrant, c'est la première fois que je codais en live binome avec quelqu'un sans m'engueuler avec lui parce qu'il comprend pas grin

FUUUUUUUUUUUUUUUU