Então a pergunta era:
Isso é realmente uma prática comum ou de alguma forma uma boa idéia?
Entre as respostas atualmente disponíveis, há um retumbante não . Portanto, existem poucas outras coisas em que eu poderia falar disso; até mesmo o código processual pode ser modificado e incluir tudo, menos a pia da cozinha . O que uma classe gigante dividida em parciais faz, tudo se transforma em uma grande bagunça.
No entanto, essa pergunta é um arenque vermelho para a parte crítica real do que foi esquecido; como o OP também tem o seguinte a dizer sobre a situação:
(...) Enquanto minha reação intestinal foi tirá-lo da órbita, eles insistem ...
(...) Estou inclinado a tomar medidas imediatas para derrubar esta fera (ou pelo menos impedir que ela cresça ainda mais), mas estou disposto a acreditar que estou errado.
SEGURE SEUS CAVALOS!
Isso aqui é algo que faria meu monóculo figurativamente falando cair em minha xícara figurativa de chá.
Já estive em situações semelhantes e deixe-me dizer: não caia no desejo de fazê-lo. Claro, você pode soltar o Nuke Hammer of Justice na equipe, mas antes de fazê-lo, tenha humor com o seguinte trecho de enigma:
O que acontecerá se você disser à equipe que o código deles é péssimo e não funciona ?
(... ou algo parecido, mas menos ofensivo, isso realmente não importa, porque eles ficarão ofendidos, independentemente do que você faça, se decidir aplicar força total neles)
Qual é a situação atual com a base de código? Está funcionando? Então você terá grandes problemas para explicar aos clientes que o código deles é péssimo . Quaisquer que sejam os motivos, desde que funcionem, a maioria dos clientes não se preocupa com a organização do código.
Também se coloque no lugar deles, o que eles fariam? Deixe-me diverti-lo com o seguinte resultado muito possível:
Membro da equipe nº 1: "Então esse cara está nos dizendo que estamos fazendo errado nos últimos anos."
Membro da equipe nº 2 e nº 3: "Que idiota."
Membro influente da equipe nº 4: "Não se preocupe, vou apenas para a gerência e relatar isso como um assédio".
Veja o que o membro da equipe influente nº 4 fez lá? Ele foi para a gerência e reduziu seu carma na empresa. Ele pode ser americano-italiano, dizendo a todos para não se preocuparem com isso, mas então eu seria racista sobre isso.
Pintar a equipe infratora em um canto e deixá-los admitir que fizeram errado por tanto tempo também é uma má idéia e leva à mesma coisa. Você perderá o respeito e algum carma político do escritório.
Mesmo que você tenha conseguido que várias pessoas concordassem com isso, a fim de "ensinar uma lição à equipe", lembre-se de que você está fazendo isso com pessoas razoavelmente inteligentes que aparentemente fazem algumas coisas. Uma vez que o código seja reescrito / refatorado / tratado / seja o que for e surgirem problemas, você será responsabilizado como se fosse o bombeiro-bombeiro .
Ser adversário em situações como essa é principalmente um jogo de perder / perder , pois corre o risco de se tornar um círculo vicioso de jogos de culpa. Este é um resultado subótimo para esta situação. Mesmo se você vencer, de repente você é entregue a bagunça que outra pessoa fez.
Existem outras maneiras (muito maduras)
Eu estava em uma situação semelhante uma vez, mas depois peguei uma flecha no joelho. Então, depois de um tempo com aquela repentina carreira na minha mente, consegui um livro Driving Technical Change de Terrence Ryan . Ele lista vários padrões de céticos, o tipo de pessoa que não age com base em boas idéias. É provável que todos sejam aplicáveis no caso do OP:
- Os desinformados - Eles realmente não sabiam que existem outras maneiras ou simplesmente não entendiam. Os desenvolvedores juniores geralmente se enquadram nessa categoria, mas não necessariamente. (Para ser sincero: conheci desenvolvedores juniores que seriam mais brilhantes que isso.)
- The Herd - Eles conheciam técnicas melhores do que usar classes parciais, mas não sabiam que eram permitidos.
- The Cynic - Eles apenas gostam de argumentar que ter aulas parciais é melhor do que a sua ideia apenas por uma questão de argumentar. É fácil fazer isso na multidão, em vez de ficar na frente da multidão.
- The Burned - Por alguma estranha razão, eles não gostam de criar novas classes, provavelmente percebem isso muito difícil.
- The Time Crunched - Eles estão tão ocupados que não conseguem se preocupar em corrigir seu código.
- O Chefe - Eles pensam: "Bem, funciona; então, por que se preocupar?"
- The Irrational - Ok, eles são completamente loucos.
O livro continua com uma lista de estratégias e assim por diante, mas no caso do OP é uma questão de persuasão. Ir de cabeça erguida com fatos sobre o antipadrão não é suficiente.
Se for do seu interesse aumentar a qualidade do código, pelo menos ofereça à equipe infratora chances de reiterar e corrigir sua própria bagunça . Pessoalmente, eu tentava influenciá-los ouvindo e fazendo perguntas importantes, deixando-os contar sua história:
- O que exatamente a classe de Deus está fazendo?
- Eles tiveram algum problema? Eles têm algum erro? Sugira correções sãs sem pedir que elas o façam.
- Se você é um usuário dessa classe god como uma API: existem maneiras mais simples de usar o código do que usar a coisa toda? Sugira exemplos mais simples, veja como eles reagem.
- Você pode trocar alguma funcionalidade por outra, sem precisar escrever a função?
- Eles precisam de algum treinamento? Você pode convencer a gerência a fazê-lo ou almoçar sobre padrões e práticas?
... e assim por diante. Dê-lhes pequenas sugestões para que possam avançar. Leva tempo e vai precisar de alguma graxa de cotovelo no nível político do escritório, mas paciência e trabalho duro são uma virtude, certo?