Pourquoi pas un nom de variable fin avec"? " tout en un nom de méthode peut?
Un nom de méthode peut finir avec un point d'interrogation ?
def has_completed?
return count > 10
end
mais un nom de variable ne peut pas.
Quelle est la raison? N'est-il pas pratique pour avoir des noms de variables se terminant de la même façon? Étant donné que nous avons l'habitude ne pouvez pas dire si foobar
est une méthode ou une variable juste en regardant le nom foobar
de toute façon, pourquoi l'exception de la ?
cas?
Et comment dois-je travailler avec cela? Peut-être de toujours utiliser des has
ou is
dans le code?
if process_has_completed
...
end
if user_is_using_console
...
end
- Comme une note de côté: Par convention, les préfixes comme
has_
ouis_
ne sont pas vraiment populaires en Ruby, doncdef completed?
serait un meilleur exemple.
Vous devez vous connecter pour publier un commentaire.
Vous auriez à demander Matz pour obtenir une réponse faisant autorité. Cependant,
finished?
impliquerait un type spécifique (boolean), qui semble quelque peu contradictoire pour moi.?
, nous avons probablement utiliser quelque chose d'autre... et impliquant ainsi. Ayant?
est juste un symbole commode à utiliser.?
et!
pourrait être considéré comme des questions et des ordres donnés à un objet. Ce n'est pas faire sanse pour les variables.full_name
, il est presque certainement ne va pas être un nombre à virgule flottante. En revanche, dans tapé la programmation, qu'il y a des moments où un nom de ne pas implique un type -- lorsque vous travaillez avec des génériques. Le récepteur chose ne tient pas, parce qu'il est de pratique courante d'utiliser les accesseurs et mutateurs pour traiter des méthodes comme s'ils étaient des variables à l'intérieur d'un champ ou d'un bloc.Maintenant, c'est juste une pensée, mais je pense que les méthodes avec des noms comme
empty?
suggèrent qu'un certain type de contrôle doit être fait à l'intérieur et à l'objet ou à une classe (selon le contexte). Cette vérification ou de l'évaluation des moyens d'une action doit être effectuée. Dans l'ensemble, depuis que nous demandons (ainsi,?
) de l'objet, pour certaines d'état, signifie qu'il ya une possibilité que de l'objet d'état peut changer tout au long du cycle de vie d'application. Une variable peut être dépassée, mais?
-méthode (à vérifier) sera fait dans le moment précis, offrant ainsi une mise à jour de l'information sur un état qui pourrait être présenté dans un booléen forme.Donc j'aimerais penser que c'est une contrainte de conception de l'architecte (Matz) pour faire appliquer la plus logique, plus proche de la vie réelle approche de codage.