Nel valutare il lavoro di una società di outsourcing, ho scoperto che hanno una propensione a dividere il lavoro in quante più classi possibili, ognuna delle quali è testabile. In un certo senso questo sembra encomiabile, ma lo stanno portando all'estremo e nessuno sembra in grado di controllarli.
Recentemente ho trovato quello che avrebbe dovuto essere un semplice componente dell'interfaccia utente che avrei implementato come nella maggior parte delle 3 classi (uno per i dati, uno per il controller, uno per la visualizzazione), in realtà erano suddivisi in circa 20 classi (ad es. classe base e più classi derivate) e protocolli, richiedendo alla fine circa 70 file sorgenti (file Objective C .m e intestazioni .h) che includevano un test per ogni parte, anche il più piccolo pezzo. Il loro codice, nonostante l'elaborato codice di test, funziona a malapena e si interrompe costantemente.
Giustificano questo con un vago discorso su SOLID e / o sul problema della "massiccia classe".
Questo codice è già stato scritto. A nessuno è stato permesso di progettarlo. Posso criticare l'implementazione, ma non influenzare realmente il design.
Quindi quale è una buona strategia, oltre a cercare un impiego migliore, per trattare con Outsourcing Companies Gone Wild dove i loro numerosi ingegneri espandono i progetti semplici il più possibile e il più a lungo possibile in questo modo, rendendoli complicati e vasti?