Entonces la pregunta era:
¿Es esto realmente una práctica común o de alguna manera una buena idea?
Entre las respuestas disponibles actualmente se encuentra un rotundo no . Así que hay algunas otras cosas en las que podría intervenir, como; incluso el código de procedimiento puede hacerse modular e incluir todo, pero el fregadero de la cocina no es la forma de lograr la modularidad. Lo que sí hace una clase gigante dividida en parciales, todo se suma en un gran desastre.
Sin embargo, esa pregunta es una pista falsa para la parte crítica real de lo que se ha perdido; ya que el OP también tiene lo siguiente que decir sobre la situación:
(...) Si bien mi reacción intestinal fue sacudirlo desde la órbita, insisten ...
(...) Me inclino a tomar medidas inmediatas para derribar a esta bestia (o al menos evitar que siga creciendo), pero estoy dispuesto a creer que estoy equivocado.
¡CALMA!
Esto es algo que haría que mi monóculo figurativamente hablando cayera en mi taza de té figurativa.
He estado en situaciones similares y déjame decirte: NO caigas en la urgencia de hacerlo. Claro, puedes dejar el Nuke Hammer of Justice en el equipo, pero antes de hacerlo, por favor hazte el siguiente enigma:
¿Qué pasará si le dice al equipo que su código chupa y al cabrón ?
(... o algo así pero de manera menos ofensiva, en realidad no importa porque se ofenden independientemente de lo que hagas si decides ir con toda su fuerza)
¿Cuál es la situación actual con la base del código? ¿Está funcionando? Entonces tendrás grandes problemas para explicarles a sus clientes que su código esencialmente apesta . No importa qué razones tengan: mientras funcione, a la mayoría de los clientes no les importa cómo está organizado el código.
También ponte en sus zapatos, ¿qué harían? Déjame divertirte con el siguiente resultado muy posible:
Miembro del equipo n. ° 1: "Entonces este tipo nos dice que lo hemos estado haciendo mal durante los últimos años".
Miembro del equipo # 2 y # 3: "Qué idiota".
Miembro del equipo influyente # 4: "No se preocupe por eso, simplemente iré a la gerencia y lo reportaré como un acoso".
¿Ves lo que el miembro del equipo influyente # 4 hizo allí? Fue a la gerencia y redujo su karma en la empresa. Él podría ser estadounidense-italiano, diciéndole a todos que no se preocupen por eso, pero entonces sería racista al respecto.
Pintar al equipo infractor en una esquina y dejarlos admitir que lo hicieron mal durante tanto tiempo también es una mala idea y lleva a lo mismo. Perderás el respeto y algo de karma político de oficina.
Incluso si logró que un grupo de personas firmen esto, para "enseñarle una lección al equipo", recuerde que lo está haciendo con personas bastante inteligentes que aparentemente hacen algunas cosas. Una vez que el código será reescrito / refactorizado / tratado / lo que sea que surja y surjan problemas, usted será responsable de ser el iniciador .
Ser adversario sobre situaciones como esta es principalmente un juego de perder / perder, ya que corre el riesgo de convertirse en un círculo vicioso de juegos de culpa. Este es un resultado subóptimo para esta situación. Incluso si ganas, de repente te entregan el desastre que otra persona hizo.
Hay otras formas (mucho más maduras)
Una vez tuve una situación similar, pero luego recibí una flecha en la rodilla. Entonces, después de un tiempo con esa repentina flecha que altera la carrera en mi mente, recibí un libro Driving Technical Change de Terrence Ryan . Enumera varios patrones de escépticos, el tipo de personas que no actúan sobre buenas ideas. Es muy probable que sean aplicables en el caso del OP:
- Los desinformados: realmente no sabían que había otras formas o simplemente no entendían. Los desarrolladores junior generalmente encajan en esta categoría, pero no necesariamente. (Para ser honesto: he conocido desarrolladores junior que serían más brillantes que esto).
- El rebaño: sabían mejores técnicas que usar clases parciales, pero no sabían que estaban permitidos.
- The Cynic: simplemente les gusta argumentar que tener clases parciales es mejor que su idea solo por discutir. Es fácil hacerlo en una multitud en lugar de pararse frente a una multitud.
- The Burned: por alguna extraña razón, no les gusta crear nuevas clases, lo más probable es que lo perciban como demasiado difícil.
- The Time Crunched: están tan ocupados que no pueden molestarse en arreglar su código.
- The Boss - Piensan: "Bueno, funciona, ¿por qué molestarse?"
- The Irrational: Ok, están completamente locos.
El libro continúa con una lista de estrategias, etc., pero en el caso del OP es una cuestión de persuasión. Ir a la cabeza con los hechos sobre el antipatrón no es suficiente.
Si le interesa aumentar la calidad del código, al menos brinde al equipo infractor la oportunidad de reiterar y rectificar su propio desorden . Personalmente, trataría de influirlos escuchando y haciendo preguntas principales, dejar que cuenten su historia:
- ¿Qué está haciendo exactamente su clase de dios?
- ¿Han tenido algún problema? ¿Tienen algún error? Sugiera soluciones sanas sin decirles que lo hagan.
- Si usted es un usuario de esta clase de dios como API: ¿Hay formas más simples de usar el código que usar todo? Sugiera ejemplos más simples, vea cómo reaccionan.
- ¿Se puede cambiar alguna funcionalidad con otra, sin tener que escribir la función?
- ¿Necesitan alguna capacitación? ¿Puede convencer a la gerencia para que lo haga o almorzar sobre patrones y prácticas?
... y así. Déles pequeñas sugerencias para que puedan avanzar. Lleva tiempo y necesitará un poco de grasa en el codo, pero la paciencia y el trabajo duro son una virtud, ¿verdad?