Envoyé par
Matthieu Vergne
Faux. Dans la programmation, il n'y a pas que la raisonnement abstrait qui compte. Tout ce qui est optimisation en particulier ne concerne que peu l'architecture abstraite que tu as dans tes diagrammes, mais avant tout le système concret sur lequel tu l'applique. Par exemple, en Java tu utiliseras un HashSet ou LinkedHashSet ou TreeSet selon l'utilisation que tu feras de ta collection, détail qui n'a aucune raison d'être dans tes diagrammes, mais qui peut avoir un impact notable sur les performances. Et ça c'est pas un pisseur de code qui va le trouver tout seul. Tes diagrammes permettent d'avoir une idée plus ou moins générale, selon le niveau de détails dans lequel tu descend, mais arrivé à un niveau très détaillé le diagramme devient fastidieux à faire et pas assez expressif pour tenir compte des détails nécessaire, donc tu passes au code.
C'est plutôt toi qui vit dans ton monde de bisounours en croyant qu'une fois que tu as fais tes jolis schémas tout est joué. La réflexion d'un vrai programmeur se trouve à tous les niveaux. C'est bien parce qu'on délègue l'architecture aux uns et "le reste" aux autres que ces derniers, n'ayant pas le choix sur l'architecture, doivent s'adapter comme ils peuvent et pisser le code générique qui devrait pouvoir marcher même s'ils ont pas forcément la maîtrise totale de l'architecture.
Enfin, faire de la conception avant le codage est évidemment une bonne chose, mais tu te plantes si tu penses que c'est ce que j'ai critiqué. Le fait est qu'on utilise aussi ces diagrammes pour faire de la génération de code, ce qui est certes un avantage à court terme mais pas à long terme si mal utilisé. En particulier, à partir d'une vision abstraite, on met en place une architecture qui pourra montrer des faiblesses une fois qu'on en arrivera au détail. Cela arrive notamment si on ne fait pas une conception d'ensemble (à tous les niveaux) mais uniquement les niveaux les plus haut et puis "allez c'est bon on génère le code et on voit ce que ça donne", ce qui est très tentant de faire quand on a des deadlines. On utilise alors la facilité de générer du code pour faire de multiples essais rapides et quand on est content du résultat on s'arrête, sans toujours avoir compris pourquoi celui là est mieux. C'est plus rapide, mais ça peut faire un code imbuvable (car les générateurs de code sont avant tout formel, pas humain, donc leur manière de coder est pas forcément intuitive et facile à reprendre) et être source d'un code pour le coup non maintenable car incompréhensible. Et dans ces conditions, on n'a pas d'autre choix que de pisser du code plutôt que de faire un truc optimisé, parce que de toute façon on ne maitrise pas assez la bête pour faire quelque chose qui marche mieux.
Partager