2016-05-05 43 views
8

Desidero scrivere codice che anche altri possono facilmente comprendere.Convenzioni di denominazione per attributi booleani

Gli attributi booleani come hide_email o email_hidden hanno uno stile convenzione?

+1

Il punto interrogativo è un buon sistema per i metodi booleani, ma non può essere utilizzato nei nomi di variabili. –

risposta

14

I pensa in questo modo:

  • Un attributo booleano deve rispondere a una semplice domanda si/no.
  • Chiedere "è?" è un modo semplice per fare una domanda si/no.
  • Così un nome attributo booleano dovrebbe completare la frase is <attribute_name>
  • Poi basta rimuovere il is perché Rubino preferisce il suffisso ? per "è" i nomi dei metodi in stile (vedi sotto per maggiori informazioni), lasciando con solo email_hidden

Quindi, per il vostro caso specifico, il nome del tuo attributo in questo modo:

  • Inizia con la domanda "e-mail è nascosto" ?. Che può essere rappresentato in codice come: email_is_hidden.
  • Rimuovere il is e si è lasciato con email_hidden
  • Ruby on Rails definisce una versione "predicato" (uno che termina in un ?) del vostro attributo booleano e restituisce true/false come previsto.Quindi, mentre il tuo attributo si chiama email_hidden nel database, dovresti fare riferimento come email_hidden? nel tuo codice per chiarezza e come lo è la convenzione Ruby on Rails.
1

Sarebbe email_hidden?. È ciò a cui la comunità di Ruby si era abituata.

Si prega di notare il ? alla fine.

+0

Suppongo che tu non intenda salvare l'attributo con un punto interrogativo? So che in Rails puoi chiamare tutti gli attributi con un punto interrogativo. –

+0

Capisco cosa intendi. Pensavo avessi un attributo booleano che altri avrebbero voluto interrogare. No, non vuoi usare 'email_hidden' o' email_hidden? 'Come metodo setter. Dovresti usare un verbo come 'hide_email' per un metodo che lo nasconde e' email_hidden = 'per consentire ad altri di impostarlo per te. – Uzbekjon

+1

Il modo in cui hai posto la domanda ... sembra che tu stia parlando di un metodo booleano per controllare lo stato di una email, non di un metodo per eseguire le procedure di occultamento e restituire true in caso di successo e false in caso di fallimento. –

2

Prendendo questi due esempi di nomi che ha dato:

  • hide_email sarebbe un buon nome per un metodo di esecuzione di un tale compito, un metodo che esegue tutte le procedure per nascondere una e-mail nel campo di applicazione del sistema . Ma non sarebbe mai un buon nome per un metodo booleano che restituisce lo stato di un'e-mail.
  • email_hidden?, con un punto interrogativo (?) Alla fine, sarebbe il nome corretto per un metodo booleano che indica se l'e-mail è nascosta o meno.

Considerare sempre le convenzioni Ruby se si vuole veramente scrivere un buon codice. Ti aiuteranno anche quando pensi ai processi nel tuo sistema.

+1

I punti interrogativi non possono essere in variabili, solo i nomi dei metodi –

+0

@maxpleaner Ben detto. L'ho modificato per inserire la parola "metodo" dopo booleano. –

2

I codici ruby ​​hanno detto che tutti i metodi booleani dovrebbero finire?

Su record attivo si poteva vedere

User.valid? 

O in Ruby si potrebbe trovare

[].nil? 
[].empty? 

Se vuoi sapere sulle convenzioni di Ruby leggere questo

http://blogs.visoftinc.com/2010/04/12/ruby-beauty-method-naming-conventions/

+0

Nel rubino puoi anche vedere 'obj.is_a? (Qualcosa)' o 'hash.has_key? (: Foo)'. questo vuol dire che è accettabile usare 'is_XXX?' o 'has_XXX?' quando ci si riferisce a 'self' –