La question était donc:
Est-ce en fait une pratique courante ou en quelque sorte une bonne idée?
Parmi les réponses actuellement disponibles figure un non retentissant . Donc, il y a peu d'autres choses que je pourrais carillon comme à ce sujet; même le code procédural peut être modulaire et inclure tout, mais l'évier de cuisine n'est pas la façon dont vous atteignez la modularité. Ce qu'une classe géante divisée en partiels fait, tout cela se résume en un gros gâchis.
Mais cette question est hareng rouge pour la vraie partie critique de ce qui a été manqué; que le PO a également à dire sur la situation:
(...) Alors que ma réaction intestinale a été de le neutraliser de l'orbite, ils insistent ...
(...) Je suis enclin à prendre des mesures immédiates pour faire tomber cette bête (ou du moins l'empêcher de grandir davantage) mais je suis prêt à croire que je me trompe.
CALMEZ-VOUS!
Voici quelque chose qui ferait tomber mon monocle au sens figuré dans ma tasse de thé figurative.
J'ai été dans des situations similaires et permettez-moi de vous dire: NE PAS tombez dans le besoin de le faire. Bien sûr, vous pouvez laisser tomber le Nuke Hammer of Justice dans l'équipe, mais avant de le faire, veuillez vous humourer avec l'énigme suivante:
Que se passera-t-il si vous dites à l'équipe que son code est nul et qu'il s'enfonce ?
(... ou quelque chose comme ça, mais moins offensant, cela n'a pas vraiment d'importance car ils seront offensés indépendamment de ce que vous faites si vous décidez de leur donner toute leur force)
Quelle est la situation actuelle avec la base de code? Est-ce que ça marche? Ensuite, vous aurez de gros problèmes à expliquer à leurs clients que leur code est essentiellement nul . Peu importe leurs raisons: tant qu'il fonctionne, la plupart des clients ne se soucient pas de l'organisation du code.
Mettez-vous également à leur place, que feraient-ils? Permettez-moi de vous amuser avec le résultat très possible suivant:
Membre de l'équipe n ° 1: "Il y a donc ce type qui nous dit que nous avons mal agi ces dernières années."
Membre de l'équipe # 2 et # 3: "Quel connard."
Membre influent de l'équipe n ° 4: "Ne vous inquiétez pas, je vais simplement aller voir la direction et le signaler comme un harcèlement."
Voyez ce que le membre influent de l'équipe # 4 a fait là-bas? Il est allé à la direction et a réduit votre karma dans l'entreprise. Il pourrait être américano-italien, disant à tout le monde de ne pas s'en inquiéter, mais je serais alors raciste à ce sujet.
Peindre l'équipe fautive dans un coin en lui permettant d'admettre qu'elle a mal agi pendant si longtemps est également une mauvaise idée et conduit à la même chose. Vous perdrez du respect et du karma politique de bureau.
Même si vous avez réussi à amener un tas de gens à signer, afin de "donner une leçon à l'équipe", rappelez-vous que vous faites cela à des gens assez intelligents qui, apparemment, accomplissent certaines tâches. Une fois que le code sera réécrit / refactorisé / traité / quoi que ce soit et que des problèmes surviennent, vous serez tenu responsable car vous étiez le pompier .
Être adversaire dans des situations comme celle-ci est principalement un jeu perdant / perdant car il risque de devenir un cercle vicieux de jeux de blâme. Il s'agit d'un résultat sous-optimal pour cette situation. Même si vous gagnez, vous êtes soudainement remis le désordre que quelqu'un d'autre a fait.
Il existe d'autres moyens (très matures)
J'étais dans une situation similaire une fois, mais j'ai ensuite pris une flèche au genou. Donc, après un moment avec cette flèche soudaine de changement de carrière dans mon esprit, j'ai eu un livre Driving Technical Change de Terrence Ryan . Il énumère plusieurs modèles de sceptiques, le genre de personnes n'agissant pas sur de bonnes idées. Ils sont tous très probablement applicables dans le cas du PO:
- Les non-informés - Ils ne savaient vraiment pas qu'il y avait d'autres moyens ou tout simplement ne comprenaient pas. Les développeurs juniors entrent généralement dans cette catégorie, mais pas nécessairement. (Pour être honnête: j'ai rencontré des développeurs juniors qui seraient plus brillants que cela.)
- Le troupeau - Ils connaissaient de meilleures techniques que l'utilisation de classes partielles mais ne savaient pas qu'ils étaient autorisés.
- The Cynic - Ils aiment juste affirmer qu'avoir des cours partiels est mieux que votre idée juste pour discuter. C'est facile de le faire dans une foule au lieu de se tenir devant une foule.
- The Burned - Pour une raison étrange, ils n'aiment pas créer de nouvelles classes, très probablement ils le perçoivent comme trop difficile.
- The Time Crunched - Ils sont tellement occupés qu'ils ne peuvent pas prendre la peine de corriger leur code.
- Le patron - Ils pensent: "Eh bien, ça marche; alors pourquoi s'embêter?"
- L'Irrationnel - Ok, ils sont juste complètement fous.
Le livre continue avec une liste de stratégies et ainsi de suite, mais dans le cas du PO, c'est une question de persuasion. Aller fort avec des faits sur l'anti-modèle ne suffit pas.
S'il est dans votre intérêt d'améliorer la qualité du code, donnez au moins à l'équipe fautive des chances de réitérer et de rectifier son propre gâchis . Personnellement, j'essayerais de les influencer en les écoutant et en posant des questions directrices, en les laissant raconter leur histoire:
- Que fait exactement leur classe de dieu?
- Ont-ils rencontré des problèmes? Ont-ils des bugs? Suggérez des corrections sensées sans leur dire de le faire.
- Si vous êtes un utilisateur de cette classe divine en tant qu'API: existe-t-il des moyens plus simples d'utiliser le code que d'utiliser le tout? Suggérez des exemples plus simples, voyez comment ils réagissent.
- Pouvez-vous changer certaines fonctionnalités avec une autre, sans avoir à écrire la fonction?
- Ont-ils besoin d'une formation? Pouvez-vous convaincre la direction de lui en donner ou de prendre des déjeuners sur les modèles et les pratiques?
... etc. Donnez-leur de petites suggestions pour qu'ils puissent aller de l'avant. Cela prend du temps et aura besoin d'un peu d' huile de coude de qualité politique, mais la patience et le travail acharné sont une vertu, n'est-ce pas?