Perché gofmt scoraggia le righe vuote alla fine dei file?

1

Da quando ho iniziato a programmare, mi è sempre stato insegnato a lasciare una riga vuota finale alla fine dei miei file, la ragione di solito è qualcosa in relazione a come rende più facile leggere i file concatenati quando si usa cat .

Anche se al momento non riesco a trovare un esempio, GitHub indica le righe vuote mancanti alla fine di un file usando un simbolo rosso, o almeno, usato per - così chiaramente è disapprovato da una parte considerevole della community.

Lavorando con Go ultimamente, ho notato che gofmt non ama le righe vuote alla fine di un file e il mio plug-in Vim le rimuove automaticamente.

Perché le righe vuote alla fine di un file sono scoraggiate anziché applicate in Go?

    
posta Jules 25.01.2016 - 05:24
fonte

2 risposte

2

Ho avuto questo stesso problema quando sono passato a Vim. Apparentemente tratta il carattere di nuova riga come la fine della riga, a differenza della maggior parte degli altri editor che lo trattano come un separatore tra le righe.

Se si salva un file in vim senza la linea nera aggiuntiva e lo si apre in un altro editor, verrà visualizzata la riga aggiuntiva. Se salvi un file senza la riga aggiuntiva in un altro editor e lo apri in vim, allora deve solo assumere l'ultima riga con una nuova riga. Se salvi il file, aggiungerà la linea.

    
risposta data 02.04.2016 - 23:02
fonte
1

Non si tratta di GO ma dello standard POSIX che dovrebbe esserci un carattere di fine riga alla fine di ogni riga.

POSIX: 3.206 Linea Una sequenza di zero o più caratteri non più un carattere di terminazione.

Quindi non viene da Google ma dal tuo stesso editore che rispetta questo standard. GNU Emacs, Vim ... normalmente rispettano tutti lo standard.

Rispetta lo standard, ma crea anche il suo ed è in grado di funzionare senza quella riga vuota Leggendo il codice da vai a se stesso scritto dagli autori di go, usano la riga vuota alla fine del loro codice sorgente. Leggendo anche nel Effective Go non ci sono informazioni sulla linea vuota. Né nel codice sorgente golang.org/src/cmd/gofmt/gofmt.go stesso Non c'è niente in tutto questo su GOlang.org

    
risposta data 02.04.2016 - 22:03
fonte

Leggi altre domande sui tag