Sintassi
Usare
::solo per fare riferimento a costanti (incluse classi e moduli) e costruttori (comeArray()oNokogiri::HTML()).Evitare
::per le normali invocazioni di metodi.Evitare l'uso di
::per definire classi e moduli o per l'ereditarietà, poiché la ricerca delle costanti non viene effettuata nelle classi/moduli padre.
# bad
module A
FOO = "test"
end
class A::B
puts FOO # this will raise a NameError exception
end
# good
module A
FOO = "test"
class B
puts FOO
end
endUsare def con le parentesi quando ci sono dei parametri.
Omettere le parentesi quando il metodo non accetta alcun parametro.
Evitare il metodo
for.Evitare
then.Preferite l'operatore ternario(
?:) ai costruttiif/then/else/end.
In un operatore ternario si usa un'espressione per ramo. Questo significa anche che gli operatori ternari non devono essere annidati. In questi casi, preferire i costrutti
if/else.Evitate gli operatori ternari multilinea
?:; usate inveceif/unless.Usare
when x then ...per i casi a una riga.Usare
!invece dinot.Preferire
&&/||aand/or.Preferire
unlessaifper le condizioni negative.Evitare l'uso di
unlessconelse. Riscrivere le condizioni con il caso positivo per primo.Usare le parentesi intorno agli argomenti delle invocazioni di metodi.
Omettere le parentesi quando non si forniscono argomenti. Omettere le parentesi anche quando l'invocazione è a riga singola e il metodo:
è una chiamata a un metodo di classe con ricevitore implicito.
è uno dei seguenti metodi:
requirerequire_relativerequire_dependencyyieldraiseputs
è chiamato da uno "zucchero sintattico" (ad esempio:
1 + 1chiama il metodo+,foo[bar]chiama il metodo[], ecc.)
Omettere le parentesi graffe esterne intorno a un hash implicito di opzioni.
Utilizzare l'abbreviazione di invocazione proc quando il metodo invocato è l'unica operazione di un blocco.
Preferire
{...}ado...endper i blocchi a riga singola.Preferire
do...enda{...}per i blocchi a più righe.Omettere
returnquando possibile.Omettere
selfquando possibile.
Avvolgere l'assegnazione tra parentesi quando si utilizza il suo valore di ritorno in un'istruzione condizionale.
Usare
||=per inizializzare le variabili solo se non sono già inizializzate.Evitare di usare
||=per inizializzare variabili booleane.
Evitare gli spazi tra il nome di un metodo e la parentesi di apertura.
Preferire la sintassi lambda literal a lambda.
Preferire
procaProc.new.Prefissare i parametri di blocco non utilizzati con
_. È accettabile anche usare solo_.Preferite una clausola di guardia quando potete affermare dati non validi. Una clausola di guardia è una dichiarazione condizionale all'inizio di una funzione che permette di uscire dal metodo il prima possibile.
Preferire gli argomenti tramite parole chiave a quelli delle opzioni hash.
Preferire
mapacollect,findadetect,selectafind_all,sizealength.Preferire
TimeaDateTime.Preferisce
Time.iso8601(foo)invece diTime.parse(foo)quando si aspettano stringhe di tempo formattate ISO8601 come"2018-03-20T11:16:39-04:00".
Last updated
Was this helpful?