Studi sulla larghezza ottimale del codice?


131

Se abiliti il ​​"Visualizza margine destro" nel tuo IDE preferito, è probabile che abbia 80 caratteri per impostazione predefinita. Tendo a cambiarlo in 120 per nessun altro motivo se non lo standard di una società con cui ero qualche anno fa, e nessun'altra società mi ha detto di farlo diversamente.

La mia domanda è: ci sono studi che mostrano in realtà 80 caratteri come larghezza massima ottimale per la leggibilità del codice, o questo valore è solo un "è sempre stato così" e nessuno sa davvero perché sia ​​così? E, la larghezza di una riga di codice dovrebbe far parte del tuo standard di codifica?


1
Sebbene non conosca nessuno studio, troverai molte opinioni come risposte a questa domanda: * Esiste un motivo valido per imporre una larghezza massima di 80 caratteri in un file di codice, oggi?
Adam Bellaire,

3
nessuno studio che io conosca ma potresti trovare interessante esaminare diversi standard di codifica dei progetti. Ad esempio, Google ha 80 caratteri. ( code.google.com/p/google-styleguide ) dove WebKit (come quello di Apple?) non ha limiti AFAIK ( webkit.org/coding/coding-style.html ). Mozilla sembra essere 80 ( developer.mozilla.org/En/Mozilla_Coding_Style_Guide#Line_length )
gman

È lo stesso del motivo per cui si scrive "Burocrate" nel modo in cui lo facciamo. Perché molto tempo fa qualcuno ha definito uno standard per la ragione che potrebbe o non avrebbe avuto senso in quel momento. Per l'ortografia è stato un dubbio fascino per il latino, per il codice delle dimensioni di una carta perforata. Quindi un metodo è stato etichettato "corretto". E da allora i piccoli burocrati hanno applicato gli standard.
Montabile il

Risposte:


116

In realtà, la cosa a 80 colonne precede da tempo DOS. Viene dai punzoni delle carte, che erano dispositivi a 80 colonne.

E per rispondere alla domanda del PO, uno "studio" è in corso da circa 600 anni: il libro stampato. Questi si sono evoluti nel corso dei secoli, tenendo presente soprattutto la leggibilità, nella posizione in cui ci troviamo ora in cui la lunghezza media della riga per il testo è di circa 60 caratteri. Quindi, per la leggibilità, scegli margini più stretti.


85
Non credo davvero che tu possa confrontare la lettura del linguaggio naturale con la lettura di un linguaggio di programmazione in termini di usabilità.
Frug,

25
@Frug - in realtà, probabilmente puoi. Il motivo della larghezza di 65 caratteri non è perché non è possibile leggere righe più grandi, ma è un arco troppo stretto quando l'occhio si sposta sulla riga successiva. È possibile aggirare il problema aumentando l'altezza della linea, ma che rende più difficile per bloccare l'utilizzo spaziatura di trasmettere senso, quindi è probabilmente una cosa da evitare in un IDE.
Jimmy Breck-McKye,

32
@Jim - Il mio linguaggio naturale non contiene parole con 30 caratteri (non che io usi comunque) e analizza in modo completamente diverso da un linguaggio di programmazione. Spesso puoi raggruppare una riga di codice come separata dalle altre, sia essa una condizione lunga o una combinazione di metodi e classi lunghi. Combina questo con il rientro e il confronto tra le due lingue diventa assurdo. Non ho dubbi sul fatto che chiunque studi scientificamente la leggibilità e la lunghezza della linea si opporrebbe al tuo lavaggio sulle differenze.
Frug,

10
@Frug - Non vedo davvero come le tue obiezioni si occupano di nessuna delle affermazioni che ho fatto, ma posso vedere che il rientro rompe il modello che sto proponendo. Non chiamarmi "Jim", comunque.
Jimmy Breck-McKye il

17
Un libro è in genere posizionato molto più vicino agli occhi di un monitor, il che significa che è consentito un numero inferiore di caratteri per riga se il lettore deve essere in grado di leggere il libro senza dover alzare il collo. In genere uno schermo non viene posizionato alla distanza di un libro, il che significa che è possibile utilizzare più caratteri per riga mantenendo i limiti dell'angolo massimo dell'occhio. Inoltre, il codice non viene letto tanto quanto viene esaminato, rendendo questa larghezza meno importante. Io (YMMV) posso facilmente seguire le righe con 120 caratteri di codice sullo schermo del mio laptop, ma questo è troppo ampio per 2 buffer emacs sul mio laptop da 15 ", ahimè.
Obscaenvs

104

Abbi pietà dei programmatori che devono mantenere il tuo software in un secondo momento e attenersi a un limite di 80 caratteri.

Motivi per preferire 80:

  • Leggibile con un carattere più grande sui laptop

  • Lascia spazio per mettere due versioni fianco a fianco per il confronto

  • Lascia spazio per le visualizzazioni di navigazione nell'IDE

  • Stampa senza interruzioni arbitrarie (vale anche per e-mail, pagine Web, ...)

  • Limita la complessità in una riga

  • Limita il rientro che a sua volta limita la complessità di metodi / funzioni

Sì, dovrebbe far parte dello standard di codifica.


10
Questi sono ottimi motivi per mantenere la larghezza della linea a 80 caratteri o meno. Sono davvero sorpreso (deluso) che la tua risposta, che è chiaramente pensata e corretta, non abbia ottenuto più punti. A questo elenco aggiungerei: (1) lo scorrimento orizzontale non è divertente. (2) Puoi aumentare notevolmente la densità del codice su cui stai lavorando visualizzando quel codice in più colonne. Una grande quantità di beni immobili va sprecata quando ci sono alcune linee che si estendono molto a destra, mentre la maggior parte delle altre linee no.
Donnie Cameron,

4
ok ma cosa succede quando c'è un blocco di codice con poche rientranze? che mi è successo e 80 personaggi non sono affatto divertenti.
EKanadily,

14
Limits the complexity in one lineNon sono sicuro del perché sia ​​meglio diffondere la complessità su più righe. Spinge di più sul tuo stack mentale.
Jonathan,

4
Questo è un argomento molto vecchio. ma sei ancora d'accordo ora che molti sviluppatori usano monitor da 27 pollici :-). Voglio dire, se la vista è un problema, uno schermo più grande può aiutare. 8 anni fa lavoravamo ancora su monitor da 17 o 20 pollici e alcuni anche su risoluzioni 4: 3.
Mathijs Segers,

1
@MathijsSeger indipendentemente dalle dimensioni o dalla risoluzione del monitor, è ancora più comodo mantenere il testo entro i 30 gradi centrali del campo visivo. Quando lavoro con più finestre aperte nei monitor side-by-side, tendo a girare la testa per guardare l'una dall'altra. Una persona non dovrebbe dover girare la testa o ruotare gli occhi fino in fondo per leggere da un capo all'altro di una linea. Una rotazione così rapida dell'occhio o della testa potrebbe causare vertigini se eseguita tutto il giorno.
Maurizio

41

Non ho studi, ma riferirò la mia esperienza.

Trovo che lo scorrimento orizzontale sia noioso quando si tratta di testo. Guardo l'ambiente in cui verrà utilizzato il codice e stabilisco gli standard di larghezza in base a quel contesto.

Ad esempio, quando ho lavorato in Emacs su XWindows, ha funzionato bene avere 2 finestre Emacs affiancate in ogni momento. Ciò li limitava a 80 caratteri, quindi quella era la mia lunghezza massima della linea.

A un certo punto ho lavorato in Visual Studio su uno schermo 1920x1200. Lo terrei massimizzato, con tutte le finestre degli strumenti ancorate su un lato. Rimaneva abbastanza spazio per due finestre dell'editor affiancate di circa 100 caratteri.

Trovo anche che le linee più lunghe provengano da chiamate di metodo con lunghe liste di parametri . Questo a volte è un odore di codice : forse il metodo dovrebbe essere riformulato .

Se tu e i tuoi co-programmatori avete schermi ad alta risoluzione e una vista nitida, utilizzate sempre un carattere piccolo e linee lunghe. Al contrario, potresti aver bisogno di linee brevi.


1
più uno per gli "occhi acuti" perché davvero quello che è successo con me.
EKanadily,

26

Normalmente uso 120-150 a meno che la società non descriva diversamente. Tuttavia dipende anche dal tipo di codice:

  • Non (quasi) mai uso più istruzioni su una riga
  • Uso solo le linee lunghe (> 12) solo se le linee che sembrano simili possono essere allineate e non spezzate.
  • Uso sempre abbastanza spazi / parentesi ecc
  • Preferisco nomi di variabili più lunghi rispetto a nomi più brevi

Fino a qualche anno fa mi limitavo a 100, ma ora vengono normalmente utilizzati i widescreen e i monitor ad alta risoluzione 120 possono essere visti anche sui laptop (che uso a malapena).

Confrontare uno schermo con un libro non è molto utile perché un libro ha più spazio verticale e uno schermo ha più spazio orizzontale. Cerco sempre di mantenere una funzione max. uno schermo visibile lungo.


6
Come funzionano 120-150 caratteri per riga con l'apertura di più finestre affiancate? Tieni aperte molte finestre dell'editor di codice fianco a fianco? - Sul mio monitor da 30 '', posso avere 3 finestre affiancate, se limito le mie linee a 97 caratteri / linea.
KajMagnus,

1
Codifico su un display di grandi dimensioni e mi piacciono anche quantità maggiori. Miro a 110-130. Uno dei miei obiettivi principali è la leggibilità e la suddivisione delle istruzioni in 2-3 righe è talvolta meno leggibile secondo me. A volte andrò anche a 500-1000 per nascondere la spazzatura che non voglio vedere come alcuni commenti, codice disabilitato e alcuni valori codificati. Penso che dipenda anche dal programmatore. Se la maggior parte dei programmatori opera a 80, allora è meglio mirare a questo quando si lavora con codice condiviso.
Sunsetquest,

10

Forse gli 80 personaggi sono anche un buon punto per evitare queste cattive catene getter:

object.getFoo().getBar().getFooBar().get ...

se lo limiti a 80 caratteri, forse qualcuno localizzerebbe queste variabili e farebbe un controllo null ecc., ma forse la maggior parte dei programmatori li lascerebbe a capo nella riga successiva. Non lo so

Oltre a ciò, 80 personaggi sono fantastici come indicato da Starblue. Questo dovrebbe sicuramente rientrare negli standard di codifica.


5
Cordiali saluti, l'eccessivo metodo concatenamento come questo è noto come il disastro ferroviario del treno .
Dennis,

4

Ignorando le restrizioni hardware e le differenze nel modo in cui leggiamo il codice rispetto al linguaggio naturale, vedo tre ragioni principali per limitare le righe a circa 80 caratteri.

  1. I bulbi oculari umani sono rotondi, non molto stretti e larghi, e la maggior parte della loro risoluzione è nel mezzo . Quando leggi per ore alla volta è molto più comodo spazzare gli occhi in brevi archi, usando una barra di scorrimento secondo necessità. Non conosco uno studio formale specifico per la leggibilità del codice, ma dalle mie stesse osservazioni, con il monitor a 2 piedi di distanza, con testo dimensionato con un carattere a spaziatura fissa di 10 pt, 100 caratteri occupano circa 1/3 del mio campo orizzontale di visione, o intorno ai 60 gradi ( al di fuori dei 30 gradi circa dove si trova la risoluzione di tutti i nostri occhi ).
  2. La maggior parte delle persone utilizza un monitor di grandi dimensioni al lavoro in modo da poter vedere più cose senza fare clic avanti e indietro, non in modo da poter vedere una cosa davvero grande.
  3. Le linee più brevi contengono meno complessità, il che spera forzatamente uno sviluppatore di scomporre il proprio codice in unità più digeribili.

3

Ricordo distintamente di aver letto da qualche parte (penso che fosse nella documentazione Agile ) che per una leggibilità ottimale la larghezza di un documento dovrebbe essere di circa due alfabeti, o 60-70 caratteri. Penso che la larghezza della linea dei vecchi terminali provenisse in parte da quella vecchia regola tipografica.


3

L'opzione del margine destro ha lo scopo di mostrarti la larghezza della pagina se stai per stampare il codice, e un post precedente ha detto che era impostato su 80 perché questa era la lunghezza della linea storicamente prima della GUI fino al pugno carte.

Di recente ho visto una raccomandazione su alcuni blog (non ricordo quale blog) per aumentare la dimensione del carattere IDE al fine di migliorare la qualità del codice, la logica alla base è che se meno codice si adatta allo schermo scriverai linee più brevi e funzioni di gridatore.

A mio avviso, le linee più brevi rendono più semplice la lettura del codice e il debug, quindi provo a mantenerle brevi, se devi impostare un limite per farti scrivere un codice migliore, scegli cosa funziona per te, anche se sei più produttivo con le linee più lunghe si sentono libere di aumentare le dimensioni della pagina e il codice solo su schermi ampi.


1

Come alcune persone hanno sottolineato in altre risposte, la ragione del limite di 80 caratteri è in parte storica (schede perforate, piccoli schermi, stampanti ecc.) E in parte biologica (per tracciare la linea in cui ti trovi è generalmente bello poter vedere l'intero linea senza dover girare la testa).

Detto questo, ricorda che siamo ancora umani e costruiamo strumenti per risolvere i nostri limiti. Ti propongo di ignorare l'intero dibattito sulla limitazione dei caratteri e di scrivere cose che abbiano un senso indipendentemente dalla loro lunghezza e di utilizzare un IDE o un editor di testo che possa aiutarti a tenere traccia delle righe correttamente. Usando lo stesso argomento per il rientro nel dibattito tra schede e spazi, così come la larghezza delle rientranze, ti propongo di utilizzare un marcatore di rientro (più comunemente la scheda) e basta che le persone configurino il proprio IDE o editor di testo per visualizzarle come trovano più comodo per loro.

Attenersi a un numero fisso di caratteri per riga peggiorerà sempre le cose per tutti tranne che per il pubblico target. Detto questo, se non condividerai mai il codice, mai; allora non c'è davvero alcun motivo per iniziare questa discussione. Se desideri condividere il codice, dovresti probabilmente lasciare che le persone decidano ciò che vogliono da sole invece di forzare i tuoi ideali (o qualcun altro) su di loro.


0

Per quanto ne so, l'80 carattere viene utilizzato come standard di codifica per mantenere la compatibilità con gli editor della riga di comando (la larghezza predefinita del terminale è in genere 80 caratteri). Con IDE moderni e grandi risoluzioni dello schermo 80 caratteri non sono probabilmente "ottimali", ma per molti sviluppatori è essenziale mantenere la leggibilità nel terminale. Per tale motivo, è improbabile che una larghezza di 80 caratteri venga sostituita come standard di fatto per la larghezza del codice in qualunque momento presto. E per rispondere alla tua domanda finale, sì, la larghezza del codice così come qualsiasi altra caratteristica che influenzerà la leggibilità del tuo codice dovrebbe essere affrontata nei tuoi standard di codifica.

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.