Lunghezza del file e larghezza della linea "consigliate" [chiuso]


9

Ero curioso di sapere se qualcuno fosse a conoscenza di una raccomandazione da una fonte attendibile per il numero massimo di righe di codice per un determinato file. Ad esempio, Linter di chiusura di Google raccomanda che ogni riga non superi gli 80 caratteri.


Il tuo esempio non è coerente con la domanda. La tua domanda fa domande sulle righe per file e il tuo esempio è caratteri per riga.
Jason S,

2
È lo stesso concetto: l'area quadrata che devi scorrere, sia orizzontale che verticale.
Devin G Rhode,

Risposte:


11

Un file dovrebbe essere abbastanza corto da poter trovare qualsiasi funzione o metodo senza scorrere avanti e indietro più volte per cercarlo o dover ricordare una stringa di ricerca. La metrica che utilizzo è la quantità di tempo che passo alla ricerca di codice all'interno di un file anziché a leggerlo. Se ciò diventa evidente, è tempo di ripartizionare il file o la classe.

Una buona dimensione per un blocco di codice di base è abbastanza corta, sia in larghezza che in altezza, da poter proiettare l'intestino durante una revisione del codice di gruppo, e avere tutto in forma senza che il carattere sia così piccolo che il ragazzo nella parte posteriore di la sala conferenze non riesce a leggerlo. Questa dimensione aiuta anche se sei mai stato chiamato a spiegare del codice quando tutto ciò che hai con te è un dispositivo mobile o un tablet.


Questa è la linea guida più utile, grazie mille!
Devin G Rhode,

C'è una lunghezza del file troppo corta ? Ho un progetto con 35 file con una lunghezza media di ~ 200 righe.
Dan

1
@Dan mi sarei avventurato "no" come risposta. Se l'apertura di un file è troppo difficile nella tua configurazione, forse è il momento di migliorare la tua configurazione (ad esempio plugin VIM, IDE migliore, qualunque cosa faccia Emacs)
Mike Graf

@Dan: troppo corto un file? Possibile se passi più tempo a cercare il file minuscolo corretto per alcuni LOC invece di trovarli in un file logicamente e strettamente correlato (ma non troppo lungo).
hotpaw2,

9

Non esiste una cosa del genere, e se ci fosse, sarebbe fortemente dipendente dal linguaggio che stavi usando (facendo la stessa cosa in assemblatore contro C # o Java per esempio).

Per le lingue di livello superiore, puoi vedere questa discussione SO. Per Java / C #, 10-20 righe per metodo è ciò che Bob Martin consiglia al massimo. Non ci sono discussioni sui file, in quanto non è rilevante e dipende da cosa dovrebbe fare la classe.

Per quanto riguarda il limite di 80 caratteri per riga, questo è un ritorno ai giorni delle carte perforate. Detto questo, quando le linee diventano troppo lunghe, la leggibilità ne risente.


5
+1: è bene mantenere le linee larghe meno di 80 caratteri; più facile da leggere e dà più spazio per le finestre affiancate
Donal Fellows

6
Personalmente, penso che la leggibilità soffra quando una linea viene accartocciata in più righe per adattarsi a 80 o meno. C'è anche il tempo perso a decidere dove fare le pause o a discuterne.
ergosys,

5

Le lunghezze di file e linee sono misure di effetti secondari della complessità e come tali sono altamente variabili. Quello che dovresti mirare è il codice senza inutili complessità, non un certo numero massimo di righe.

I file lunghi tendono a indicare che metodi, subroutine o classi sono eccessivamente complessi (facendo troppe cose, non sufficientemente fattorizzate, ecc.)

Le linee lunghe tendono a indicare che le espressioni sono eccessivamente complesse.

Sono odori che indicano un potenziale problema di codice, non metriche di destinazione ben definite.


3

La lunghezza della linea dovrebbe essere tale da non dover scorrere lo schermo per vedere l'intera linea. Dipende dalle dimensioni e dalla risoluzione del monitor.

I metodi e le funzioni sono i migliori se possono adattarsi a una schermata.

I file non dovrebbero essere troppo lunghi. I migliori sono file brevi, in cui è facile comprendere la classe e l'implementazione.
Una volta ho lavorato su un progetto che aveva un file di 10 kline. È stato come leggere un libro molto complesso. Devo dire quanti problemi ha causato l'implementazione?


Il codice non dovrebbe richiedere una configurazione minuscola del monitor grande, in particolare per le revisioni del codice di gruppo.
hotpaw2,

"La lunghezza della linea dovrebbe essere tale da non dover scorrere lo schermo per vedere l'intera linea." - cosa succede se il tuo editor si chiude?
Dan Dascalescu il

3

80 caratteri!

Ricordo che quando facevo COBOL vedevo file di codice sorgente per programmi di fatturazione di circa 80 pagine e altro. Certo, non riesco a vedere che questo è vicino alla pratica comune ma 80 caratteri è ugualmente ridicolo.

Dal punto di vista delle dimensioni della classe, se si tenta di applicare questo suggerimento su una tipica classe Customer che ha circa 80 proprietà e circa 20 metodi, sarà necessario suddividere la classe in molte altre e rendere il codice molto caotico.


1
Assolutamente. 80 caratteri significa che è possibile stampare una sezione di codice per il brainstorming con una dimensione del carattere ragionevole su un foglio A4 / Letter verticale. Significa anche che su un ragionevole monitor per computer di sviluppo, è possibile visualizzare tre copie del codice sorgente affiancate senza scorrimento orizzontale per eseguire fusioni a tre vie (divertente che 80x8x3 sia 1920 * 8 ').
Mark Booth,

2

Cerco di mantenere brevi classi e metodi, ma non mi preoccupo molto della lunghezza della linea. In questi giorni di schermi ampi e identificatori lunghi, penso che ottanta personaggi siano troppo pochi. Ci vuole un po 'di lavoro per infrangere le dichiarazioni in modo che siano facilmente leggibili e, con un limite di ottanta caratteri, accade abbastanza frequentemente. Penso che circa 120 o 130 colonne per riga sia più ragionevole.


Uso monitor da 22 "capovolti in verticale, il che mi dà 1080 pixel su ogni schermo (e in verticale, posso avere 104 righe di codice visibili alla volta!). Mantenere le larghezze di riga a 90 o meno caratteri è utile in scenari come questo.
Roy Tinker,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.