Ci sono degli effetti collaterali negativi nella suddivisione di moduli di grandi dimensioni? [chiuso]

21

Stavo navigando in un progetto github e ho trovato questo modulo che ha più di 10 mila righe.

È una pratica comune avere tanto codice in un singolo modulo?

Mi sembra che questo dovrebbe essere diviso su più moduli. Forse uno per ogni motore di database.

Quali benefici ottiene lo sviluppatore dal realizzare un enorme modulo come questo (diverso da "averlo tutto in un unico posto") o quale lato negativo c'è dalla divisione (diversa dalla "complessità")?

    
posta Mahmoud Hossam 15.03.2012 - 13:12
fonte

4 risposte

14

Quello che hai incontrato è il cosiddetto " oggetto God ", perché fa tutto o sa tutto. Scappa da esso (se puoi).

Non esiste un numero definito di LOC per modulo, ma dovrebbe essere qualcosa che renda facile sfogliare il codice e capire facilmente che cosa stanno facendo i metodi. Dalla mia esperienza personale, se il tuo modulo va oltre le linee 1k * , stai facendo qualcosa di sbagliato.

* Anche un modulo di linea da 1k è molto grande.

    
risposta data 15.03.2012 - 13:47
fonte
4

Questo sembra essere un modulo in cui i limiti di dimensioni tipiche potrebbero non essere applicabili. La maggior parte delle funzionalità si trova nelle prime 2 righe di codice e commenti. Il resto del file sembra essere un sacco di classi di adattatori e altre classi di supporto che sembrano essere strettamente accoppiate al modulo. In altre lingue le classi si troverebbero in file separati di dimensioni ragionevoli.

Potrebbero essere utili altre stringhe doc, ma aumenterebbero le dimensioni di un modulo già grande. Il codice è chiaro e auto esplicativo con commenti appropriati dove necessario.

    
risposta data 16.03.2012 - 02:32
fonte
4

Ovviamente il "limite" effettivo varia in base al progetto e a una moltitudine di fattori.

Ma mi associo a una regola generale: 200 linee di Python decente. Cioè, nessun codice C o Java scritto in Python, ma buon Python in Python.

    
risposta data 16.03.2012 - 08:49
fonte
1

Wow.

Credo di non conoscere la risposta completa per questo, ma mi piace pensare come risposta alla domanda del titolo "Quanto dovrebbe essere grande un modulo Python?" come il concetto di Parnas, nascondendo un segreto. In questo caso il modulo sembra farlo correttamente (e questo è un grande segreto che nasconde).

Ho iniziato a scovare documenti in seguito che parlano molto dell'accoppiamento e della coesione. Forse avere molti moduli db forzerebbe troppe chiamate tra i moduli per aumentare quella che è considerata una cattiva pratica, cioè una coesione più bassa e un accoppiamento più elevato?

Ho visto dati sperimentali che parlano di programmatori che decidono di sacrificare le buone pratiche per motivi di semplicità e comprensione, nonostante qualsiasi dettato dalle buone pratiche. In realtà, potrebbe esserci anche un conflitto tra buone pratiche. Ad esempio, le prestazioni di solito non rendono felici le persone che fanno manutenzione in un secondo momento. Non sono abbastanza sicuro di come la leggibilità sarebbe migliorata in questo caso con un modulo così grande.

Un'altra cosa che ho notato è che una parte del codice è dichiarata generica e il resto dei dbs è esteso da esso. Non sono un programmatore Python, ma forse questo potrebbe giustificare qualcosa?

Quindi, non ho una risposta definitiva, ma spero che qualcuno metta in evidenza anche questi punti!

    
risposta data 15.03.2012 - 13:25
fonte

Leggi altre domande sui tag