2010-02-10 15 views
8

Guardando il codice di altre persone sembra molto comune includere uno spazio aggiuntivo all'interno dei blocchi di parentesi graffa. C'è una ragione per questo? A me sembra aggiungere tasti in più per aggiungere bruttezza. Soprattutto quando le cose si fanno annidati:Spazio vuoto rubino: è {: a => 1} migliore di {: a => 1}?

lambda { (1..5).map { |i| { :a => { :b => i } } } } 

Per qualche ragione sembra proprio più conciso e coerente di fare:

lambda {(1..5).map {|i| {:a => {:b => i}}}} 

Forse gli spazi in più sono alcuni effetti di testo lato redattore o c'è una ragione storica o qualcosa? Non ho visto questo affrontato nelle guide di stile e se è come 2 indentazione spaziale voglio seguire le convenzioni, ma se non c'è una buona ragione suppongo che continuerò a fare le cose a modo mio. Quale preferisci e perchè?

+3

Si potrebbe voler rendere questo wiki della comunità, dal momento che è così soggettivo. –

+0

Le parentesi graffe possono indicare sia i blocchi che gli hash. –

+0

Immagino che stavo sperando che questo non sarebbe stato così soggettivo, che ci sarebbe stata una risposta chiara e corretta sostenuta da un valido ragionamento. – eremite

risposta

5

La maggior parte del codice Ruby che vedo (e, si spera tutto il codice che scrivo) usa questo stile:

{ :key => 'value' } 

Questo è quello che ho ottenuto usato per e interiorizzato.

Quando tutto è stato detto e fatto, questo particolare problema di stile non è di fondamentale importanza. Detto questo, la comunità di Ruby (come altri) crede che sia importante abbinare il proprio stile (a) al progetto con cui si sta lavorando e (b) alla comunità di codice nel suo complesso. Ecco perché raccomando di usare gli spazi bianchi extra.

BTW, questo è un buon stile di guida Rubino: http://www.caliban.org/ruby/rubyguide.shtml#style

+0

Quindi ho seguito il tuo consiglio e ho fatto alcune semplici espressioni regolari sui principali progetti di ruby ​​guardati su github. E si scopre che i blocchi includono quasi sempre gli spazi extra mentre gli hash di solito fanno, ma non sempre. Alcuni degli approcci combinati di seguito sono stati interessanti ma non sembrano essere largamente favorevoli o immediatamente ovvi, quindi ho deciso di sottomettermi alla volontà della maggioranza e cambiare il mio stile per usare gli spazi extra (e anticipare gli hash ruby ​​1.9 che non ne hanno bisogno, come sottolinea Mereghost). – eremite

0

Non sono programmatore Ruby, ma tendo a mettere ulteriore spazio dopo parentesi/parentesi, se ho più tempo tra di esse - cioè più lungo se istruzione o calcolo extra come argomento di una funzione.

Quindi direi - anche se non sono un programmatore Ruby - fare come si desidera/come i vostri datori di lavoro (se non siete liberi professionisti/hobbisti).

3

Sembra solo una questione di stile. Penso che siano brutti, tralasciano gli spazi extra.

Modifica: Sono d'accordo con il commento qui sotto che solo dicendo che è una questione di stile non dà una licenza per fare quello che vuoi. Se qualcun altro dovesse mai leggere o mantenere il codice, aderire a uno stile comune è solo una buona pratica di codifica. Quindi sarei la prima persona a inserire spazi se qualcuno mi ha convinto che la maggior parte del codice Ruby utilizza gli spazi in questo modo. Personalmente continuo a pensare che sia brutto ma è molto meno importante che avere gli altri in grado di leggere il mio codice.

+3

Un sacco di cose sono una questione di stile - ma la preferenza di un individuo per lo stile non è l'unico (o anche primario) fattore qui. La domanda chiave è come utilizzare uno stile che si integra con la comunità di Ruby. In questo modo il tuo codice sarà più facile da leggere e ti darà più rispetto nella community. –

+1

Essere contrari qui: più facile da leggere per chi? Se il codice è progettato per essere letta dalla comunità di Ruby, è sicuro, ma se la persona che deve capirlo meglio è tu, dovresti impostare il tuo codice nel modo che lo rende più facile da leggere. (Detto questo, non sto sostenendo uno stile di codifica estremamente divergente: meglio cercare di fare lo sforzo di uniformare un po ', dato che troverai che ripaga quando devi leggere il codice degli altri ...) – Shadowfirebird

1

L'esempio si mostra è una questione di stile. Penso che togli gli spazi se vuoi mettere tutto su una riga. Tuttavia, se si mette

[1,2,3].slice (2) 

nel codice, Ruby ti dà un avvertimento

AVVERTENZA: lo spazio non mettere prima argomento parentesi

Quindi, credo che Ruby è appassionato di parentesi, ma non di parentesi graffe.

+2

Stai confrontando mele e arance. Gli spazi di cui @eremite parla sono quelli * dentro * ricci, non quelli all'esterno. Stai parlando di spazi guida (e forse finali). Un esempio analogo del tuo sarebbe '[1,2,3] .slice (2)' – Zano

+0

Quindi la parola "comunque" – dbrown0708

3

È possibile utilizzare una combinazione.In un posto in cui lavoravo, avevamo una regola di stile un po 'sfocata che diceva "usa gli spazi tra parentesi, tranne quando sono le parentesi esterne di una struttura". Questo suona confuso, ma spesso ti aiuta ad arrivare a qualcosa che renda un buon senso visivo intuitivo.

lambda {(1..5).map {|i| {:a => { :b => i }} }} 

Mi piace come questa spaziatura scatena l'hash interna (valore di ritorno), senza sentirsi troppo smushed, e il finale }} aiuta a vedere che è racchiuso da due livelli di nidificazione.

0

Fino ad un certo punto, penso che sia una questione di gusto personale. Normalmente trovo che aggiungere spazio bianco aiuti la leggibilità, ma non sempre. Nel tuo esempio, personalmente, vorrei:

lambda{ (1..5).map{ |i| {:a=>{:b=>i}} } } 

Naturalmente, se lo trovate problematico per leggere, si ha quasi sempre la possibilità di non utilizzare un lambda, se si preferisce.

Se stai codificando con un gruppo di altre persone - o con lo scopo specifico di mostrare il tuo codice alla comunità Ruby - devi anche considerare ciò che troveranno leggibile.

Ma non sono sicuro che mi interessi molto se il mio esempio sopra è "spaziatura normale rubino".

0

Lo spazio in più all'inizio/fine degli hash era probabilmente reso buono stile per migliorare la leggibilità su chiavi/valori che iniziano/finiscono con qualsiasi cosa eccetto una lettera.

{:a => "b"} #is less readable than 
{ :a => "b" } #more readable. 

E 'in parte attribuita alle parentesi graffe, vedo raramente gli spazi all'inizio di hash in Ruby ([]).
La nuova sintassi introdotta hash in Ruby 1.9 è probabilmente modificare questo

{a: "b"} #same as {:a => "b"} 
0

Ho sempre pensato che fosse più leggibile per includere lo spazio in più all'interno di blocchi di parentesi graffe, ma omettere l'ultimo spazio se il carattere precedente è una parentesi di chiusura. Per usare il tuo esempio:

lambda { (1..5).map { |i| { :a => { :b => i }}}} 
+1

Completamente soggettiva, ma l'asimmetria mi infastidisce. –

0

IMHO, nella maggior parte dei casi si comportano spazi rumore come syntatic e sono fastidiosi a scrivere ... lo trovo sorprendente l'ultima ossessione della comunità rubino con loro, con i pochi che la cura su di loro cercando di imporre loro come norma dopo 10 anni senza alcuna norma del genere ....

Problemi correlati