Ho una grande classe (> 1000 linee), in cui tutti i metodi dipendono da un piccolo insieme di attributi in quella classe. Posso pensare a 2 modi rapidi di refactoring.
-
Lo tengo come un oggetto enorme, ma divido i metodi correlati in classi separate da cui ereditro (ma non istanziamo quelle classi separate, solo l'ultima nella catena ereditaria). Questo probabilmente ha lo svantaggio che concettualmente, il mio oggetto è ancora un enorme monolite.
-
Rendo gli attributi comuni, con alcune funzioni di aiuto, in una classe separata. Tutti gli altri codici che dipendono da questo stato comune sono nella loro classe, ma contengono lo stato comune attraverso la composizione. Lo svantaggio è che ho finito con un sacco di chiamate di ricerca annidate simili a
self.commonState.foo
, invece di soloself.foo
.
Quest'ultimo sta diventando un po 'reminiscente del pattern MVC, ovviamente. C'è una risposta chiara a quale metodo è preferito?