God Files versus Ravioli Code

5

Recentemente ho fatto una domanda sull'opportunità o meno di refactoring del mio codice. le risposte che ho ricevuto sono state sicuramente nel campo di procedere con il refactoring a causa della presenza di un God File.

Tuttavia, ora sto spingendo verso ciò che temo sia il codice Ravioli. Avrò circa 6-7 ".c" moduli (che trovo perfettamente gestibili), ma mi spingo ad avere probabilmente circa 10 ~ ".h" intestazioni.

Ho anche ancora circa 8000 righe di codice che ho bisogno di analizzare e refactoring nelle loro parti e non sono nemmeno sicuro di quante altre intestazioni avrò bisogno. Probabilmente condenserò e combinerò alcune intestazioni, ma la mia domanda è:

Che cosa c'è di peggio dal punto di vista della manutenibilità del software, avendo potenzialmente troppi moduli (rendendo difficile trovare e modificare le definizioni) o evitando il problema precedente potenzialmente avendo meno file ma li hanno gonfiati di funzioni eccessive? Il mio problema è inevitabile a causa delle linee di codice 12k +? O sto semplicemente soffiando le dimensioni del sistema a dismisura?

    
posta ardent 16.07.2012 - 23:24
fonte

3 risposte

13

What is worse from a software maintainability point of view, having potentially too many modules (making it difficult to find and change definitions)

Questo non è un problema. Qualsiasi IDE decente sarà in grado di portarti immediatamente da un'invocazione a una definizione, o da una definizione a una lista di tutte le invocazioni. Anche se non utilizzi un IDE, qualsiasi editor decente fornirà il supporto per ctags o uno strumento simile.

Direi che organizzi il tuo codice per enfatizzare la sua struttura logica e per rafforzare la separazione dei problemi.

    
risposta data 16.07.2012 - 23:56
fonte
5

Potrebbero esserci casi in cui i file di grandi dimensioni sono preferibili, il più semplice è non lo risolve mentre non è rotto - file di linee 10K che non riporta segnalazioni gravi e nessuna richiesta / i piani per cambiare potrebbero valere la pena tenerseli da soli.

Oltre a questo, fai un break in favore di cose che occupano 2-3 o, meglio ancora, 1 schermo nel tuo editor / IDE.

Ciò non lascia alcuna possibilità di file di Dio. 50 file più piccoli (di 50 righe ciascuno) possono essere difficili da trovare e modificare le definizioni da parte del gestore del codice, ma almeno potrebbero

  • elenca tutti i 50 nomi di file in uno schermo 1280x1024 e li fissa, e ragiona su questi
  • mostra il contenuto di un particolare file di 50 linee su uno schermo e lo fissa e lo ragiona

Indovina cosa? il manutentore potrebbe persino sperimentare l'unione di 2-3 di tali file in uno più grande per vedere se migliora la comprensione e persino (magia!) dividere i file uniti se trovano che è meglio eseguire il rollback.

Per quanto riguarda la stessa quantità di codice - 50x50 = 2500 linee - anche meno della metà di questo - 1000 righe in un singolo file - non c'è alcuna possibilità che il maintainer sia in grado di fissarlo e ragionarlo.

Una cosa da non dimenticare è che dividere il codice in parti più piccole non lo renderà automagicamente buono.

Si può avere un codice scadente in 50 file di 50 righe ciascuno. Il manutentore può guardare particolari 50 linee e realizzare queste sono schifezze. Ciò che il maintainer non può però è guardare 1000 linee e realizzare qualsiasi cosa - niente di niente.

50 file per 50 linee possono essere difficili ma ancora gestibili. 2500 linee sono ingestibili e non solo difficili - impossibili da gestire.

    
risposta data 17.07.2012 - 00:21
fonte
0

È piuttosto semplice. God Files è considerato una cattiva pratica, perché non esiste un consenso su un modo economico per navigare tra questi, in modo tale da trovare rapidamente il tuo codice di destinazione.

Suddividendo il tuo codice in file multipli usi un metodo comunemente noto, piuttosto economico e veloce, supportato da ogni IDE e che consente a tutti di trovare il codice desiderato abbastanza velocemente.

Quando sviluppi il tuo modo di navigare attraverso un God File, probabilmente anche con lo stesso livello di expsiveness, è ancora un problema per le terze parti guardare il tuo codice per navigare attraverso di esso nello stesso modo in cui lo fai, perché semplicemente non conoscono la tua metodologia.

    
risposta data 18.08.2018 - 15:51
fonte

Leggi altre domande sui tag