Domanda

La mia intenzione in questo problema non è quello di essere pedanti, ma piuttosto di esplorare un asse trascurato di un argomento importante ( l'uso di spazi bianchi ). Molto dibattito e la cura è stato messo in l'uso di spazi bianchi orizzontale, il rientro dopo un condizionale, uno spazio tra un caso e tra parentesi, ecc In realtà il problema è considerato così importante e controversa che, non solo alcune aziende hanno regole e norme per esso, ma alcune aziende hanno anche norme che vietano di essa la discussione.

Perché è, considerando lo stato di spazi orizzontali, che la discussione di spazio bianco verticale è una questione così morto? Perché il x più importante della y ? Pochi giorni fa ho notato che quando la lettura del codice, io, senza pensare, spesso regolare raggruppamenti verticali di dichiarazioni. Dopo aver letto il codice di altri popoli ora, con un occhio verso spazi verticali, ho notato diversi modelli, quindi chiedo StackOverflow:

  • Quali regole hard e soft vanno applicati a spazi bianchi in verticale?
  • Ci sono usi spazi bianchi verticali che sono generalmente considerati molto male, o molto buona pratica?
  • Hai trovato il codice di lettura con "corretto" spazio bianco verticale aiutato a comprenderlo?
  • Qualcuno diverso da tipografi e me ne importa?
È stato utile?

Soluzione

guardo spazio verticale nel codice del mio modo di guardare ai punti in prosa scritta. Proprio come un paragrafo è destinato a gruppi di frasi insieme che hanno un punto o un'idea comune, linee che sono legati dovrebbero essere raggruppati insieme.

L'obiettivo generale è quello di migliorare la leggibilità del codice. Proprio come un articolo senza alcun paragrafi sarebbe difficile da leggere, per così è codice senza alcun spazio verticale. E proprio come con la prosa, c'è un equilibrio tra la composizione di paragrafi che sono troppo corti o troppo lunghi. Ma alla fine, si tratta per lo più verso il basso per lo stile personale e la preferenza.

Altri suggerimenti

Credo che una delle cose più importanti è quello di raggruppare un passo logico insieme, come ad esempio:

foo.setBar(1);
foo.setBar2(2);
foo.writeToDatabase();

bar.setBar(1)
bar.setBaz(2);
bar.writeToDatabase();

In questo modo, il codice è più facile da leggere, ed è più descrittivo, per me comunque.

Se un gruppo di istruzioni è logicamente correlate, gli ho dato una riga vuota prima e dopo. Questa separazione aiuta se ho bisogno di refactoring fuori in una funzione più tardi.

Per quanto riguarda il doppio righe vuote:. Se qualcosa è che distinta, si dovrebbe davvero considerare la possibilità di una funzione

Se un commento si applica a diverse linee di codice, poi ho messo spazio bianco dopo l'ultima di quelle linee, meno non c'è altra sintassi per rompere le cose (come la fine di un blocco).

Da nessuna parte che sto facendo "qualcosa" che prende diverse righe di codice, subito seguito da "qualcos'altro", allora io sia astratta in funzioni separate o luogo commenti altro [*]. Così righe di codice in genere finiscono raggruppati in blocchi brevi, salvo che il controllo di flusso rende (a mio parere) spiega da sé.

mi interessa un po 'di spazio bianco, ma in realtà si tratta di commenti che mi interessa di più. Se un paio di righe di codice insieme fanno qualche cosa specifica, e non è stata presa come una funzione, poi mi piacerebbe vedere una descrizione in inglese di ciò che cosa è. In questo modo posso vedere che i "passi" della funzione davvero aggiungere fino al giusto risultato, poi cercare di vedere che ogni passo fa quello che dice di fare.

Nelle classi, a volte mi metto gli spazi bianchi tra i metodi / funzioni membro, e qualche volta no. In C ++ ho messo spazio prima specificatori di accesso.

ho messo gli spazi bianchi tra le classi, (a volte non per le classi interne anonime in Java) e tra le funzioni classi esterni.

Oltre a questo, il mio codice è abbastanza verticale denso. Ho quasi mai usare più righe vuote, anche quando la separazione sezioni di un file di intestazione e simili. Preferirei blankline-commentline-blankline piuttosto che blankline-blankline, anche se il commentline finisce per essere qualcosa di completamente banali come "funzioni di supporto". Cosa non mi piace stili che hanno un enorme spazio bianco verticale tra le funzioni - se sono in modo separato che non si vuole vedere entrambi sullo schermo allo stesso tempo, direi che o li metto in file diversi o colmare il gap con Doxygen / commenti Javadoc.

[*] Nella versione il check-in. Io di solito scrivere il codice più o meno, senza commenti, quindi compilarlo, test rapidi eseguiti, commentarlo, prove appropriate correre, commetterlo. Che spesso cambia un po ', e, a volte molto. Per esempio se sto codifica ad un algoritmo che viene definito con precisione in anticipo, o per una specifica in cui l'attuazione è "ovvio", potrei scrivere i commenti prima e poi il codice.

E 'stato conosciuto per decenni che la capacità di un programmatore per capire il codice è generalmente limitata da quanto di esso può vedere in una sola volta. (Si veda ad esempio Weinberg, "Psicologia della Programmazione computer", un vecchietto-ma-goodie.) Ai vecchi tempi di annunci di carta, i programmatori avrebbero afferrare tabelle di grandi dimensioni e la diffusione più pagine di quotazione. Al giorno d'oggi, bene immobile dello schermo è un po 'meglio rispetto ai giorni di 24x80, ma ho ancora tendono a ridurre al minimo l'uso di spazi bianchi in verticale, dal momento che un sacco di righe vuote occupano spazio sullo schermo che potrebbe essere me mostrando codice vero e proprio.

Io certamente mi interessa e tendo a codice di gruppo correttamente (almeno per i miei occhi) con righe vuote se del caso. Ofttimes questo significa molte righe vuote ma in generale ritengo il codice più leggibile rispetto con tutto stipati insieme. Proprio come spazi attorno operatori sono una cosa molto bello così sono righe vuote intorno affermazioni logicamente-raggruppati.

Più di una sola riga vuota in una volta sembra un po 'fuori luogo, però.

Mi è difficile da leggere se il codice è distanziato irregolare in senso verticale. Sono anche arrivare da eliminare parentesi non richiesto, o se non é isolati, come se e fors, porlo sulla stessa linea.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top