2016-05-05 25 views
8

Ich möchte Code schreiben, den andere leicht verstehen können.Namenskonventionen für boolesche Attribute

Haben boolesche Attribute wie hide_email oder email_hidden einen Konventionsstil?

+1

Das Fragezeichen ist ein gutes System für boolesche Methoden, aber es kann nicht in Variablennamen verwendet werden. –

Antwort

14

Ich finde Denken Sie daran:

  • Ein boolesches Attribut sollte eine einfache Ja/Nein-Frage beantworten.
  • Fragen "ist?" ist eine einfache Möglichkeit, eine Ja/Nein-Frage zu stellen.
  • So ein boolean Attributnamen is <attribute_name>
  • Dann entfernen Sie einfach das is den Satz vervollständigen sollte, weil Ruby den ? Suffix für „ist“ -Stil Methodennamen (siehe unten für weitere Informationen) vorzieht, verlassen Sie mit nur email_hidden

für Ihren speziellen Fall also, nennen Sie Ihre Attribute wie folgt aus:

  • beginnen mit der Frage „E-Mail ist versteckt“ ?. Was kann in Code dargestellt werden als: email_is_hidden.
  • Entfernen Sie die is und Sie sind mit email_hidden
  • Ruby on Rails links definiert eine „Prädikat“ Version (eine, die in einem ? endet) Ihr Boolesche Attribut und gibt true/false wie erwartet.Während Ihr Attribut in der Datenbank email_hidden genannt wird, sollten Sie es in Ihrem Code als email_hidden? für Klarheit und wie die Ruby on Rails-Konvention verweisen.
1

Das wäre email_hidden?. Das ist es, woran sich die Ruby-Community gewöhnt hat.

Bitte beachten Sie die ? am Ende.

+0

Ich nehme an, Sie wollen das Attribut nicht mit einem Fragezeichen speichern? Ich weiß, dass Sie in Rails alle Attribute mit einem Fragezeichen aufrufen können. –

+0

Ich sehe was du meinst. Ich dachte, du hättest ein boolesches Attribut, das andere abfragen möchten. Nein, Sie möchten "email_hidden" oder "email_hidden?" Nicht als Setter-Methode verwenden. Sie würden ein Verb wie "hide_email" für eine Methode verwenden, die es verbirgt, und "email_hidden =", damit andere es für Sie festlegen können. – Uzbekjon

+1

Sie haben die Frage gestellt ... es scheint, dass Sie über eine boolesche Methode sprechen, um den Status einer E-Mail zu überprüfen, und nicht über eine Methode, um die Prozeduren zum Verbergen auszuführen und true im Erfolgsfall und false im Falle von Fehler. –

2

Wenn man diese beiden Beispiele von Namen gab Ihnen:

  • hide_email ein guter Name für ein Verfahren wäre, eine solche Aufgabe ausführt, eine Methode, die alle Verfahren ausführt, eine E-Mail im Rahmen des Systems verstecken . Aber es wäre nie ein guter Name für eine boolesche Methode, die den Status einer E-Mail zurückgibt.
  • email_hidden?, mit einem Fragezeichen (?) Am Ende, wäre der korrekte Name für eine boolesche Methode, die angibt, ob die E-Mail ausgeblendet ist oder nicht.

Denken Sie immer an Ruby-Konventionen, wenn Sie wirklich guten Code schreiben wollen. Sie werden Ihnen helfen, auch wenn Sie über die Prozesse in Ihrem System nachdenken.

+1

Fragezeichen können nicht in Variablen sein, nur Methodennamen –

+0

@maxpleaner Gut gesagt. Ich habe es bearbeitet, um das Wort "method" nach boolean einzufügen. –

2

Die Ruby-Code-Smeles sagten, dass alle booleschen Methoden mit?

Auf aktiven Datensatz konnte man

User.valid? 

Oder in Ruby sehen konnte man

[].nil? 
[].empty? 

Wenn Sie wissen wollen, über Rubys Konventionen lesen Sie

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

+0

In Ruby können Sie auch 'obj.is_a? (Etwas)' oder 'hash.has_key? (: Foo)' sehen. das heißt, es ist akzeptabel, 'is_XXX?' oder 'has_XXX?' zu verwenden, wenn Sie sich auf 'self' beziehen –