it-swarm.it

Schede e spazi: qual è il carattere di rientro corretto per ogni cosa, in ogni situazione, in assoluto?

Gli standard di codifica per il codice ospitato in drupal.org suggeriscono di usare due spazi per indentare il codice; altri siti suggeriscono di utilizzare le schede per indentare il codice.

Qual è il carattere di rientro corretto per tutto e in ogni situazione? Spiega la risposta che dai.

84
kiamlaluno

spazi

Una scheda può essere un numero diverso di colonne a seconda dell'ambiente, ma uno spazio è sempre una colonna.

In termini di quanti spazi (o schede) costituisce rientro, è più importante essere coerenti in tutto il codice che utilizzare qualsiasi valore di punto di tabulazione specifico.

129
user8

schede

Ora, naturalmente, la coerenza conta più di una e una buona IDE rende le differenze trascurabili. Detto questo, il punto di questa discussione è di essere una guerra santa, quindi:

Preferisco le schede:

  • Sono un personaggio specificamente pensato per il rientro
  • Consentono agli sviluppatori con preferenze diverse nella dimensione del rientro di cambiare l'aspetto del codice senza cambiare il codice (separazione dei dati e presentazione per la proverbiale vittoria!)
  • È impossibile indentare a metà qualcosa con le schede. Quindi, quando copi il codice da un sito Web che utilizzava 3 spazi nel tuo file rientrato di 4 spazi, non devi fare i conti con un disallineamento.
248
Fishtoaster

Usa le schede per rientrare all'inizio della riga, na scheda per livello di rientro, e lascia che tutti scelgano quanto vogliono che sia.

Usa gli spazi se stai allineando i caratteri all'interno di una linea, quindi si allineano sempre indipendentemente dalle dimensioni della scheda.

E trova e prendi a pugni tutti i primi autori di software che hanno lasciato che questa cosa stupida diventasse un problema in primo luogo.
(Scherzi a parte, perché è anche qualcosa di cui si sta discutendo? Successivamente mi dirai che vuoi anche usare più caratteri per le interruzioni di riga!)

117
Peter Boughton

Tabs

  • consente agli errori di essere più evidenti , è fastidioso gestire i micronutrienti negli spazi.
  • sono coerenti , sono usati solo per il rientro, a meno che tu non stia commentando male.
  • sono personalizzabili , puoi specificare nelle opzioni dell'editor quanto sono larghe.
  • sono più produttivi , perché digitare 4 spazi quando puoi premere 1 scheda.
  • occupa meno dimensioni di più spazi.
  • occupa più spazio di uno spazio.
  • richiede meno tempo per passare .
  • tendono a funzionare meglio negli IDE.

Gli spazi devono essere usati dove le schede sono completamente inutili.

Anche per allineare parametri e commenti, le schede funzionano ancora meglio .

76
Tamara Wijsman

Tutti gli argomenti per le schede sono grandi in teoria. Ma...

In teoria, pratica e teoria sono le stesse. In pratica, non lo sono.

Sì, con le schede puoi decidere il tuo livello di rientro. E sì, puoi usare una combinazione di schede e spazi per allineare le cose. E in un mondo ideale lo farebbe

In realtà, non è possibile vedere la differenza tra spazi e tab, sembrano sempre confusi quando si sposta il codice in giro e visualizzare il codice in un altro programma che ha le schede impostate su 8 colonne è un fastidio.

Usavo le schede. Poi ho iniziato a lavorare come parte di un team e condividere codice. Sono diventato rapidamente un sostenitore degli spazi. Quindi, mentre posso simpatizzare con l'utopia delle schede, non riesco a immaginare di non usare gli spazi.

41
g .

Alcune opinioni rilevanti che potrebbero essere di interesse:

31
Fishtoaster

Schede per la vittoria.

23
Joel Barsotti

I. assolutamente. odiare. 4. spazi.

Perché? Soprattutto perché sono stanco di navigare il mio codice con una tastiera e di dover premere costantemente leftleftleftleft per superare un rientro. Questo è nato dalle prime versioni di Notepad ++ e persino da un semplice blocco note di Windows in cui non esisteva un pulsante di formattazione. Ho avuto così tanti problemi quando le persone avrebbero usato solo 3 quando ne avevo usati 4 ovunque, tra le altre cose.

L'altro motivo è che il carattere di tabulazione esiste specificamente per il rientro, ed è stato adottato solo in seguito per la navigazione. Perché stiamo facendo spacespacespacespace quando un semplice tab funzionerebbe? Perché gli IDE dovrebbero avere a che fare con il codice spaziato 2-5 e formattare correttamente quando una semplice scheda e un'opzione di preferenza funzionerebbero?

Purtroppo sono la minoranza.

20
TheLQ

Personalmente mi piace usare le schede in tutto, poiché ogni sviluppatore può controllare la quantità di rientro per scheda. In questo modo ottieni flessibilità di visualizzazione.

Detto questo, di solito imito qualsiasi stile di codifica sia nel file per iniziare (dal momento che passo molto tempo a fare lavori di manutenzione).

12
Brandon

Non penso che esista un rientro adeguato (almeno non senza una guerra minore).

Personalmente mi piacciono quattro spazi. Mi permettono di leggere il codice molto più velocemente e sembrano uguali in tutti gli editor, anche in Vi.

10
Josip Medved

Spazi, perché quando allini i commenti a destra del codice, o elenchi di parametri di funzione, espressioni multilinea complesse o cose di quella natura, vuoi che il tuo bel lavoro appaia giusto per tutti. Se si utilizzano le schede e si consente alle persone di impostare le proprie schede in modo diverso, interromperanno l'allineamento per tutti tranne i casi più semplici di rientro del codice.

Inoltre, è palesemente ovvio che tutti nel mondo dovrebbero usare vim, il che rende banale il rientro, il rientro e la navigazione attraverso i "punti di tabulazione" anche nei file con rientro nello spazio.

8
hobbs

Le schede sono la scelta naturale e ortodossa, poiché sono per definizione utilizzate per il rientro.

Sfortunatamente, le schede sono implementate in modo non uniforme, quindi l'unica soluzione del mondo reale è di 4 spazi.

6
Wizard79

Ovviamente hai bisogno di un approccio combinato.

Se condividi codice con altri sviluppatori, devi standardizzare e, dato che è impossibile (koff koff), devi fare in modo che tutti facciano quattro spazi.

Quindi hai bisogno di un editor abbastanza intelligente da non essere stupido, per sapere che dovrebbe trattare una linea con quattro spazi nella parte anteriore come se fosse rientrata. Qualsiasi moderno IDE o l'editor dei programmatori può eseguire il flusso automatico del codice con spazi anziché tabulazioni.

4
Dan Ray

Perché qualcuno non può implementare questo:

  • il codice è memorizzato in un formato compatto vantaggioso per il sistema in questione
  • quando ogni sviluppatore apre il codice, viene formattato esattamente come lo desidera
  • quando hanno finito con esso, tornano al formato compatto

Tutti sono felici perché vedono tutti il ​​proprio formato

È così difficile?

4
adolf garlic

Sono un tipo di 4 tipi di spazio, le schede non sono coerenti.

3
Walter

La risposta è che non può esserci un singolo carattere di rientro appropriato per ogni situazione. La formattazione usando i personaggi non è flessibile e può causare conflitti quando si usano stili diversi all'interno di una squadra.

L'unico metodo per formattare il codice in modo impeccabile e flessibile con diversi stili di formattazione è farlo virtualmente, cioè senza caratteri di rientro. L'unico editor di codice che conosco che supporta questo è però quello utilizzato nell'esempio seguente:

Per dimostrare formattazione virtuale, lo screenshot seguente è tratto da un editor XSLT * che utilizza questo metodo di rientro (c'è anche un breve video qui ). Ogni personaggio in XSLT è stato evidenziato in giallo, a scopo illustrativo, per consentire di vedere chiaramente solo i caratteri di tabulazione o spazio nel contenuto. Il rientro del codice è gestito dal sistema di rendering dell'editor che regola il margine sinistro (che ha uno sfondo bianco).

enter image description here

Gli unici caratteri spaziali iniziali precedono le righe Libri, poiché si tratta di contenuti letterali di testo, non di codice, questi caratteri spaziali devono essere preservati.

Con la formattazione virtuale scegli la larghezza del rientro in base all'ambiente e allo stile di rientro senza influire sui caratteri nel file di origine. Puoi anche impostare la larghezza del rientro su 0, se hai bisogno di una vista appiattita del codice come mostrato di seguito:

enter image description here

Per contrastare questo con la formattazione dei caratteri spaziali, la stessa XSLT aperta in un editor senza formattazione virtuale viene trasformata dal formattatore automatico di quell'editor in questo:

enter image description here

I blocchi gialli vuoti più grandi nella schermata sopra mostrano chiaramente i caratteri dello spazio aggiunti dal formattatore dell'editor convenzionale. Sfortunatamente, ora questi non possono essere distinti dal contenuto reale, quindi XSLT dovrebbe essere modificato per correggere questo problema.

Sommario

XSLT è forse un caso estremo, ma questo principio vale per molti linguaggi di programmazione: i caratteri dovrebbero essere usati per i contenuti e un metodo alternativo dovrebbe essere cercato quando si tratta di formattazione.

** Divulgazione: l'editor XSLT con formattazione virtuale è stato sviluppato dalla mia stessa azienda *

3
pgfearo

Fino ad ora non menzionato: ci sono lingue (Python, Haskell) in cui il rientro conta. Ma 1 carattere conta come 1 carattere, sia esso uno spazio o una scheda, quindi il rientro visto dal compilatore potrebbe non essere lo stesso che vedi sullo schermo se usi le schede.

Pertanto, in lingue come Haskell, gli spazi sono un must. In Makefile, i TAB sono un must. In tutti gli altri, è una questione di gusti personali e al giorno d'oggi non molto - ogni editor decente ha un comando "(portando) le schede agli spazi" e "(portando) gli spazi alle schede".

3
Ingo

Spazi o schede: ciò che Atwood dice in realtà è scegliere una cosa ed essere coerente nel tuo progetto. L'unico santo graal della formattazione del codice è assicurarsi che sia coerente in modo tale che lo psicopatico che mantiene il codice dopo di te non si senta costretto a rimediare permanentemente alla situazione.

Detto questo, se stai lavorando in Python o qualsiasi altro linguaggio in cui lo spazio bianco è un vero e proprio costrutto di programmazione, non riesco a immaginare di usare le schede.

3
Noah Goodrich

Apparentemente le schede rovinano le cose in Delphi, quindi non uso le schede in Delphi.

Comunque faccio tutto il resto usando Emacs e uso sempre le schede perché le mie schede vanno esattamente dove voglio che vadano.

3
Peter Turner

Usavo gli spazi, ma ultimamente ho usato le schede solo perché questo è stato impostato su Eclipse quando finalmente l'ho notato. Tutti gli altri sviluppatori del mio team usano Eclipse, quindi aveva senso standardizzare le schede quando ci siamo resi conto che le usavamo già da anni e non c'era motivo di preoccuparsi di cambiare spazio. Sono stato sorpreso da quanto non sia stato un problema.

Impostare la dimensione della scheda visualizzata su 3 o 5 caratteri in IDE semplifica notevolmente la distinzione tra le sezioni di codice che sono rientrate dagli spazi (quasi sempre 4 in questi giorni) e quelle che sono rientrate dalla scheda.

2
Shabbyrobe

Sono già stati forniti molti argomenti, ma nessuno ha menzionato dove potremmo essere diretti in futuro .

Schede o spazi!

Idealmente, il codice dovrebbe essere considerato come un dato e non essere archiviato in alcuna specifica formattazione del testo. Qualsiasi sviluppatore può applicare la propria visione preferita. Inoltre, questa vista non dovrebbe essere limitata al solo testo , ma può includere tabelle, selettori di colore e formule matematiche.

Questa idea non è troppo inverosimile. È stato Language Oriented Programming editor Meta Programming System (MPS) di JetBrain a farmi capire per prima cosa che risolve l'intera discussione, aggiungendo contemporaneamente molte altre possibilità. (Sì, questo è possibile con i plugin dell'editor, ma lavorare sul testo aggiunge direttamente così tante complessità inutili, a differenza dell'approccio adottato da MPS.)

A differenza di schede e spazi, ci sono piccoli svantaggi che possono essere menzionati per lavorare direttamente su alberi di sintassi astratti . Tutto ciò che serve è che la tecnologia maturi fino a diventare un prodotto commercialmente valido. I primi segni di questo stanno comparendo. Costruito principalmente su MPS, è stato creato un editor di ActionScript commerciale Realaxy .

Mi piacerebbe vedere uno dei grandi giocatori saltare sul concetto di questa tecnologia e vedere cosa succede!

1
Steven Jeuris

Né è meglio, né è peggio. L'unica cosa importante è essere coerenti.

Se sei una squadra di uno, scegli quello che ti piace personalmente. Considera qual è il comportamento predefinito del tuo editor preferito, ma scegli quello che ti piace.

Se fai parte di una squadra, fai quello che fa la squadra. Periodo.

Nei miei vari lavori ho usato due spazi, quattro spazi, otto spazi, linguette, spazi e linguette, penso che avrei potuto usare anche uno spazio. Dico al mio editore cosa fare, quindi non ci ripenso, l'editore elabora i dettagli.

L'unica altra cosa è assicurarti di scegliere un editor intelligente. Emacs o vi? Ora cioè una guerra santa sono disposto a combattere :-)

0
Bryan Oakley