Quindi la domanda era:
È davvero una pratica comune o in qualche modo una buona idea?
Tra le risposte attualmente disponibili c'è un clamoroso no . Quindi ci sono poche altre cose su cui potrei parlare, come ad esempio; anche il codice procedurale può essere reso modulare e includere tutto tranne il lavello della cucina non è il modo in cui si ottiene la modularità. Ciò che fa una classe gigante divisa in parziali, tutto si somma in un grande casino.
Tuttavia, questa domanda è un'aringa rossa per la vera parte critica di ciò che è stato perso; poiché l'OP ha anche le seguenti affermazioni sulla situazione:
(...) Mentre la mia reazione istintiva era quella di liberarlo dall'orbita, insistono ...
(...) Sono propenso a prendere provvedimenti immediati per abbattere questa bestia (o almeno impedire che cresca ulteriormente) ma sono disposto a credere di sbagliarmi.
Tieni i tuoi cavalli!
Questo qui è qualcosa che farebbe cadere il mio monocolo in senso figurato nella mia tazza di tè figurativa.
Sono stato in situazioni simili e lascia che te lo dica: NON cadere per l'impulso di farlo. Certo, puoi far cadere Nuke Hammer of Justice nella squadra, ma prima di farlo per favore umorizza te stesso con il seguente enigma:
Cosa succederà se dirai alla squadra che il loro codice fa schifo e si esaurisce ?
(... o qualcosa del genere, ma in modo meno offensivo, non importa perché saranno offesi indipendentemente da ciò che fai se decidi di metterli in pratica)
Qual è la situazione attuale con la base di codice? Funziona? Quindi avrai grossi problemi a spiegare ai loro clienti che il loro codice essenzialmente fa schifo . Indipendentemente dalle ragioni che hanno: finché funziona, la maggior parte dei client non si preoccupa di come è organizzato il codice.
Mettiti anche nei loro panni, cosa farebbero? Lascia che ti diverta con il seguente esito molto possibile:
Membro del team n. 1: "Quindi c'è questo ragazzo che ci dice che abbiamo fatto qualcosa di sbagliato negli ultimi anni."
Membro del team n. 2 e n. 3: "Che idiota."
Membro influente del team n. 4: "Non ti preoccupare, andrò alla direzione e lo riferirò come una minaccia."
Vedi cosa ha fatto il membro influente del team n. 4 lì? È andato alla direzione e ha ridotto il tuo karma in compagnia. Potrebbe essere italiano-americano, dicendo a tutti di non preoccuparsene, ma poi sarei razzista.
Dipingere la squadra che ha commesso il fallo in un angolo lasciando che ammettessero di aver sbagliato per così tanto tempo è anche una cattiva idea e portare alla stessa cosa. Perderai rispetto e un po 'di karma politico d'ufficio.
Anche se sei riuscito a convincere un gruppo di persone a firmare questo, al fine di "insegnare una lezione al team", ricorda che lo stai facendo a persone abbastanza intelligenti che apparentemente fanno qualcosa. Una volta che il codice verrà riscritto / refactored / trattato / qualunque cosa si verifichi e sorgono problemi che sarai ritenuto responsabile come se fossi il più importante .
Essere avversari in situazioni come questa è per lo più una partita persa / persa in quanto rischia di diventare un circolo vizioso di giochi di colpa. Questo è un risultato non ottimale per questa situazione. Anche se vinci, ti viene improvvisamente consegnato il casino che qualcun altro ha fatto.
Ci sono altri modi (molto maturi)
Una volta mi trovavo in una situazione simile, ma poi ho preso una freccia nel ginocchio. Quindi, dopo un po 'con quell'improvvisa carriera che ha cambiato la freccia nella mia mente, ho avuto un libro Driving Technical Change di Terrence Ryan . Elenca diversi schemi di scettici, il tipo di persone che non agisce su buone idee. Molto probabilmente sono applicabili nel caso del PO:
- The Uninformed - Davvero non sapevano che c'erano altri modi o semplicemente non capivano. Gli sviluppatori junior di solito rientrano in questa categoria ma non necessariamente. (Ad essere sincero: ho incontrato sviluppatori junior che sarebbero stati più brillanti di così.)
- The Herd - Conoscevano tecniche migliori rispetto all'utilizzo di classi parziali ma non sapevano che erano ammessi.
- The Cynic - A loro piace semplicemente sostenere che avere lezioni parziali è meglio della tua idea solo per il gusto di discutere. È facile farlo in mezzo alla folla invece di stare di fronte a una folla.
- The Burned - Per qualche strana ragione non gli piace creare nuove classi, molto probabilmente lo percepiscono come troppo difficile.
- The Time Crunched - Sono così occupati che non possono preoccuparsi di correggere il loro codice.
- The Boss - Pensano: "Beh, funziona; quindi perché preoccuparsi?"
- The Irrational - Ok, sono completamente pazzi.
Il libro continua con un elenco di strategie e così via, ma nel caso del PO è una questione di persuasione. Andare forte con i fatti sull'anti-schema non è abbastanza.
Se è nel tuo interesse aumentare la qualità del codice, almeno dai al team che ti ha offeso la possibilità di reiterare e correggere il proprio pasticcio . Personalmente proverei a influenzarli ascoltando e ponendo domande importanti, lasciando che raccontino la loro storia:
- Cosa sta facendo esattamente la loro classe di dio?
- Hanno riscontrato problemi? Hanno qualche bug? Suggerisci correzioni sane senza dire loro di farlo.
- Se sei un utente di questa divina classe come API: ci sono modi più semplici di usare il codice che di usare tutto? Suggerisci esempi più semplici, guarda come reagiscono.
- Puoi cambiare alcune funzionalità con un'altra, senza dover scrivere la funzione?
- Hanno bisogno di un po 'di allenamento? Riesci a convincere il management a darglielo o a pranzare su schemi e pratiche?
... e così via. Dai loro piccoli suggerimenti in modo che possano andare avanti. Ci vuole tempo e avrà bisogno di un po 'di grasso per i gomiti di livello politico, ma la pazienza e il duro lavoro sono una virtù, giusto?