2010-09-26 2 views
6

Quelle est la meilleure pratique? manipuler les propriétés avec des accesseurs par @property ou self.property?@property ou self.property pour définir une propriété avec un accesseur?

+0

C'est une bonne question, et quelque chose que je me suis demandé. La plupart du code que je vois utilise la @class_variable directement, mais je me suis souvent demandé s'il ne vaudrait pas mieux utiliser les accesseurs comme le ferait le code client, juste du point de vue du style/de la lisibilité. –

Répondre

1

Si vous utilisez juste accesseurs droite, puis coller à @property (à moins que vous venez de Python et sont rebutés par la @ Sigil hehe) autrement:

Il est tout à fait à vous. Mais self.property peut être utile dans certains cas où vous avez besoin pour assurer la propriété est d'abord mis en place:

def property 
    @property ||= [] 
end 

# don't need to check if @property is `nil` first 
self.property << "hello" 

Aussi méfiez-vous qu'il ya une légère surcharge à l'utilisation self.property sur @property comme self.property est un appel de méthode.

NOTE: La raison pour laquelle j'utilise self.property plus juste property est parce que la méthode setter correspondant property= nécessite un récepteur explicite: self.property=, donc je choisis d'utiliser le récepteur explicite avec les deux.

Questions connexes