In Ruby lasci le parentesi dentro o fuori? [chiuso]


Risposte:


95

Dagli elementi dello stile rubino

Ruby ti permette di tralasciare le parentesi, in generale, resistere a questa tentazione.

Le parentesi rendono il codice più facile da seguire. Lo stile generale di Ruby è quello di usarli, tranne nei seguenti casi:

  • Tralascia sempre le parentesi vuote
  • Le parentesi possono essere tralasciate di un singolo comando circondato da delimitatori ERb: i contrassegni ERb assicurano che il codice sia ancora leggibile
  • Una riga che è un singolo comando e un singolo semplice argomento può essere scritta senza parentesi. Personalmente, trovo che lo faccio sempre meno, ma è comunque perfettamente leggibile. Tendo a non apprezzare le singole righe nel normale codice Ruby che hanno più argomenti e senza parentesi.
  • Molti linguaggi specifici del dominio basati su Ruby (come Rake) non usano le parentesi per preservare un aspetto più naturale delle loro dichiarazioni.

27

Uso le parentesi come commenti per aiutare il futuro me ... che è probabile che abbia meno cellule cerebrali rispetto a me attuale :-)

Niente di peggio che guardare un codice che hai scritto 2 anni fa e fraintenderlo, in modo da rompere qualcosa mentre lo modifichi.

Se i genitori mi salveranno in futuro alcuni minuti (o ore) in futuro, ne inserirò quanti ne servono per rendere la dichiarazione chiarissima.


2
+1 "Uso le parentesi come commenti per aiutare il futuro me ... che probabilmente avrà meno cellule cerebrali rispetto a me attuale :-)" Questo è così vero, ed è esattamente il motivo per cui lo faccio. È anche misericordioso per chiunque mi segua e deve usare il mio codice. In breve, è una cosa di manutenzione.
Tin Man

9

Li tralascio quando faccio roba in stile DSL, come t.column o has_many in rails. Il resto del tempo, generalmente si riduce alla chiarezza, ed è probabilmente una divisione uniforme.


8

Immagino di fare entrambe le cose, ma le tengo definitivamente inserite se aumenta la leggibilità ed evita affermazioni che sembrano ambigue.


8

Se intendi nelle chiamate di funzione, metto sempre parentesi perché è sempre più facile da leggere. Se intendi in condizioni (se, mentre) metto parentesi solo quando sono necessarie.


2
Sono d'accordo. In php, ad esempio, posso individuare rapidamente una var con il prefisso $ .. in javascript posso riconciliare una funzione con le parentesi (). In Ruby la differenza tra var o func (senza parentesi) non è sempre facile da vedere.

7

Cerco di lasciarli fuori, se possibile. Penso che renda il codice più facile da leggere (in generale).


4

Qualunque sia di solito più leggibile.

Ma uso sempre le parentesi quando annido le chiamate di funzioni all'interno dei parametri di altri


2

Tendo a lasciarli fuori quando faccio asserzioni come assert_equal. Forse è per renderlo simile al linguaggio specifico del dominio.


1

Se stai programmando da molto tempo, probabilmente avrai "voglia" di aggiungere parentesi, e in molti casi ci sono buone ragioni per questo.

Il codice è più facile per gli occhi, anche se secondo me, e non ho ancora incontrato un problema: se avrai bisogno delle parentesi, lo saprai in anticipo prima di dover eseguire lo script di debug.


4
"Il mio insegnante mi dice che è inevitabile". Lo è e può essere difficile da eseguire il debug. Consiglio di usarli per evitare un'assegnazione ambigua dei parametri.
Tin Man

Sottovalutato come "più facile per gli occhi" è IMO una pessima ragione per tralasciare le parentesi attorno agli argomenti delle funzioni.
Marcello Romani

2
parlando alla folla di non genitori mi sono imbattuto in questo problema l'altro giorno if owner.is_a? thing //worked fine if owner.is_a? thing && x > 1 //not fine sto imparando ruby ​​solo da un paio di settimane e dove lavoro usa il minor numero di caratteri possibile e se vieni da qualsiasi altra lingua, c'è da imparare curva per sapere quando stai passando un hash implicito, un array di simboli, passando a simboli a una funzione ... non sono un fan.
Mega Man

@MegaManif owner.is_a? thing and x > 1
anna328p

1
@DmitryKudriavtsev andnon ha la stessa precedenza dell'operatore che &&ha
Mega Man
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.