Die Frage war also:
Ist dies tatsächlich eine gängige Praxis oder in irgendeiner Weise eine gute Idee?
Zu den derzeit verfügbaren Antworten gehört ein klares Nein . Es gibt also einige andere Dinge, die ich daran ändern könnte, wie z. Sogar der Verfahrenscode kann modular aufgebaut werden und alles einbeziehen. Mit Ausnahme der Küchenspüle erreichen Sie keine Modularität. Was eine in Teilklassen aufgeteilte Riesenklasse tut, summiert sich zu einem großen Durcheinander.
Diese Frage ist jedoch ein roter Faden für den wirklich kritischen Teil, der übersehen wurde. Da das OP auch folgendes zu der Situation zu sagen hat:
(...) Während meine Bauchreaktion darin bestand, es aus dem Orbit zu entfernen, bestehen sie darauf ...
(...) Ich bin geneigt, sofort Maßnahmen zu ergreifen, um dieses Biest zu Fall zu bringen (oder zumindest zu verhindern, dass es weiter wächst), aber ich bin bereit zu glauben, dass ich falsch liege.
HALTE DEINE PFERDE!
Dies hier ist etwas, das mein bildlich gesprochenes Monokel in meine bildliche Tasse Tee fallen lassen würde.
Ich war in ähnlichen Situationen und lass mich dir sagen: FALLE NICHT dem Drang nach. Natürlich können Sie den Nuke Hammer of Justice im Team ablegen, aber bevor Sie dies tun, müssen Sie sich mit dem folgenden Rätsel auseinandersetzen:
Was passiert , wenn Sie das Team sagen , dass ihr Code saugt und aus sod ?
(... oder so ähnlich, aber weniger offensiv, es spielt keine Rolle, denn sie werden beleidigt, egal was Sie tun, wenn Sie sich dazu entschließen, mit aller Kraft gegen sie vorzugehen.)
Wie ist die aktuelle Situation mit der Codebasis? Funktioniert es? Dann werden Sie große Probleme damit haben, ihren Kunden zu erklären, dass ihr Code im Wesentlichen scheiße ist . Egal aus welchen Gründen: Solange es funktioniert, kümmern sich die meisten Kunden nicht darum, wie der Code organisiert ist.
Versetzen Sie sich auch in ihre Lage, was würden sie tun? Lassen Sie mich Sie mit dem folgenden sehr möglichen Ergebnis amüsieren:
Teammitglied Nr. 1: "Da ist also dieser Typ, der uns sagt, dass wir es in den letzten Jahren falsch gemacht haben."
Teammitglied Nr. 2 und Nr. 3: "Was für ein Idiot."
Einflussreiches Teammitglied # 4: "Mach dir keine Sorgen, ich gehe einfach zum Management und melde es als Belästigung."
Sehen Sie, was einflussreiches Teammitglied # 4 dort getan hat? Er ging zur Geschäftsführung und reduzierte Ihr Karma in der Firma. Er könnte amerikanisch-italienisch sein und jedem sagen, er solle sich keine Sorgen machen, aber dann wäre ich rassistisch.
Es ist auch eine schlechte Idee, das beleidigende Team in eine Ecke zu schieben und zuzugeben, dass es so lange falsch gemacht hat. Sie verlieren Respekt und etwas büropolitisches Karma.
Auch wenn Sie es geschafft haben, ein paar Leute dazu zu bringen, sich zu melden, um dem Team eine Lektion zu erteilen, denken Sie daran, dass Sie dies ziemlich klugen Leuten antun, die anscheinend einige Dinge erledigen. Sobald der Code umgeschrieben / überarbeitet / behandelt / was auch immer behandelt wird, treten Probleme auf, die Sie als Feuerstarter zur Rechenschaft ziehen .
In solchen Situationen kontrovers zu sein, ist meistens ein Verlust / Verlust-Spiel, da es das Risiko birgt, ein Teufelskreis von Schuldzuweisungen zu werden. Dies ist ein suboptimales Ergebnis für diese Situation. Selbst wenn Sie gewinnen, werden Sie plötzlich über das Durcheinander gebracht, das jemand anderes angerichtet hat.
Es gibt andere (viel ausgereifte) Wege
Ich war einmal in einer ähnlichen Situation, aber dann nahm ich einen Pfeil in das Knie. Nach einer Weile mit dem plötzlichen Karrierewechsel im Hinterkopf bekam ich ein Buch Driving Technical Change von Terrence Ryan . Es werden verschiedene Muster von Skeptikern aufgelistet, die Leute handeln nicht nach guten Ideen. Sie sind alle höchstwahrscheinlich im Fall des OP anwendbar:
- Die Uninformierten - Sie wussten wirklich nicht, dass es andere Wege gibt, oder sie verstanden es einfach nicht. Junior Entwickler passen normalerweise in diese Kategorie, aber nicht unbedingt. (Um ehrlich zu sein: Ich habe Nachwuchsentwickler getroffen, die heller wären.)
- Die Herde - Sie kannten bessere Techniken als Teilklassen, wussten aber nicht, dass sie erlaubt waren.
- Die Zyniker - Sie argumentieren nur gerne, dass es besser ist, Teilklassen zu haben als Ihre Idee, nur um zu argumentieren. Es ist einfach, das in einer Menschenmenge zu tun, anstatt vor einer Menschenmenge zu stehen.
- The Burned - Aus irgendeinem Grund möchten sie keine neuen Klassen gründen. Wahrscheinlich empfinden sie es als zu schwierig.
- The Time Crunched - Sie sind so beschäftigt, dass sie sich nicht die Mühe machen können, ihren Code zu reparieren.
- Der Boss - Sie denken: "Nun, es funktioniert. Warum also die Mühe machen?"
- The Irrational - Ok, sie sind einfach total verrückt.
Das Buch geht weiter mit einer Liste von Strategien und so weiter, aber im Falle des OP ist es eine Frage der Überzeugung. Sich mit Fakten über das Anti-Pattern zu messen, ist nicht genug.
Wenn es in Ihrem Interesse ist, die Codequalität zu verbessern, geben Sie dem betreffenden Team zumindest die Möglichkeit, sein eigenes Durcheinander zu wiederholen und zu korrigieren . Persönlich würde ich versuchen, sie zu beeinflussen, indem ich ihnen zuhöre und ihnen wichtige Fragen stelle. Lassen Sie sie ihre Geschichte erzählen:
- Was genau macht ihre Gottesklasse?
- Haben sie irgendwelche Probleme? Haben sie irgendwelche Fehler? Schlagen Sie vernünftige Korrekturen vor, ohne sie dazu anzuweisen.
- Wenn Sie ein Benutzer dieser Klasse als API sind: Gibt es einfachere Möglichkeiten, den Code zu verwenden, als das Ganze zu verwenden? Schlagen Sie einfachere Beispiele vor und sehen Sie, wie sie reagieren.
- Können Sie eine Funktion mit einer anderen austauschen, ohne die Funktion schreiben zu müssen?
- Benötigen sie eine Ausbildung? Können Sie das Management davon überzeugen, dies zu tun, oder ein Lunch-Meeting über Muster und Praktiken abhalten?
... und so weiter. Geben Sie ihnen kleine Vorschläge, damit sie vorankommen können. Es braucht Zeit und braucht ein bisschen büropolitisches Ellbogenfett, aber Geduld und harte Arbeit sind eine Tugend, oder?