2017-08-15 5 views
-1

J'ai un modèle et le modèle a plusieurs attributs. Ce que je veux faire est de transformer l'un des attributs booléens à true en fonction d'autres attributs.Comment nommez-vous une fonction qui transforme une autre valeur booléenne à true?

Disons que nous avons un modèle appelé l'utilisateur et l'utilisateur a des attributs tels que ..

  • id (int)
  • nom (texte)
  • anniversaire (date)
  • legal_age (Boolean)

On m'a demandé de changer l'attribut d'âge légal, basé sur l'anniversaire. (Si l'utilisateur avait 20 ans, activez-le, sinon, gardez-le faux.) J'ai nommé la fonction check_legal_age, car elle vérifie la colonne d'âge légal à true.

Cependant, un de mes collègues m'a informé que le nom est trop vague et difficile à comprendre ce que la fonction fait et quelle sorte de valeur retourne la fonction. Après une conversation, j'ai décidé de nommer la fonction make_legal_age_true, un nom verbeux mais direct. Le collègue m'a également suggéré de nommer trufy_legal_age

Existe-t-il un moyen conventionnel de nommer une méthode comme celle-ci qui rend les intentions claires pour les autres qui lisent le code?

+3

Je reformulerais un peu votre question de façon à ce que ce soit moins une question d'opinion, sinon elle pourrait être fermée pour être hors sujet. Quelque chose de plus comme "quelle est la convention de dénomination pour ce type de méthode" serait une amélioration. Cela dit, je voudrais en faire une méthode '!' Bang et l'appeler 'legal_age!' –

+1

D'accord avec @ m.simonborg, votre méthode se modifie elle-même (ses propres attributs) donc un simple bang 'legal_age!' Fait beaucoup de sens et sera facilement compris généralement par les programmeurs ruby, jetez un oeil ici au guide de style ruby ​​pour plus de conventions de nommage: https://github.com/bbatsov/ruby-style-guide#naming –

+0

https://stackoverflow.com/questions/612189/why-are-exclamation-marks-used-in-ruby-méthodes, voir ceci, en ruby ​​bang (!) signifie changer la valeur de l'objet son appelé. – icemelt

Répondre

0

Votre collègue a raison que check_legal_age n'est pas un bon nom, non pas parce qu'elle est vague, en soi, mais parce qu'il est induire en erreur et donc dangereux. Cela semble impliquer que l'état de l'objet est vérifié ou validé, alors qu'en fait il est modifié.

La convention est qu'une méthode qui change l'état de l'objet interne devrait être une méthode "bang" !. Le simple fait de nommer la méthode legal_age! obtient le point à travers pour définir un attribut booléen à true.

Il serait préférable que la méthode de prédicat (celle qui renvoie true ou false) se termine par ?. legal_age? et legal_age! me semblent claires.

0

Si elle est une fonction, il est préférable d'utiliser un point d'interrogation, et l'appeler quelque chose comme is_legal_age?

+1

Bien que correct pour une méthode qui vérifie certaines conditions, l'OP voulait connaître une convention pour nommer une méthode qui * change * une valeur. – vijoc