Devo dividere una classe Python con molti metodi in più classi?

7

Ho una classe che finirà per avere più di ~ 30 metodi. Hanno tutti senso essere parte della stessa classe perché richiedono l'accesso agli stessi dati.

Tuttavia, ha senso dividere una grande classe in diverse classi astratte più piccole (per funzionalità, tipo, uso, ecc.) e avere l'estensione di classe principale (cioè l'ereditarietà multipla) da tutte le classi più piccole?

    
posta Jace Browning 10.07.2013 - 23:32
fonte

2 risposte

6

No.

Se crei diverse classi e le erediti tutte in un'unica classe, non hai davvero migliorato la situazione. Hai solo una classe che sta fingendo di essere un gruppo di classi. Hai reso l'implementazione molto più complicata e in realtà non hai affatto separato i pezzi. Se A eredita da B e C, allora A è complicato come B e C.

Avere più di 30 metodi suggerisce che potrebbe trarre vantaggio dalla divisione. Forse c'è un modo intelligente per dividerlo. A volte non puoi, e in tal caso raccomando di avere una classe numerosa. Ma spesso ci sono modi intelligenti per rompere l'oggetto in diversi oggetti.

    
risposta data 11.07.2013 - 07:22
fonte
0

Solo perché le cose hanno bisogno di accesso ai dati non significa che appartengano alla stessa classe. Appartengono alla stessa classe se condividono la responsabilità di proteggere gli invarianti o sono un gruppo di cose naturalmente coese che i consumatori vorranno passare in giro all'ingrosso.

Uno scenario più probabile è che hai più classi che contengono tutti i dati (o il fornitore di dati) trasmessi via costruttore (o altrimenti dipendenza invertita).

    
risposta data 11.07.2013 - 13:39
fonte

Leggi altre domande sui tag