2010-08-04 5 views
1

J'ai une définition de classe que j'ai vu d'autres propriétés de définition qui renvoient des collections d'objets.Propriétés ou méthodes de définition de classe?

Public Property GetAllAdults() as Adults 
... 
End Property 

J'ai fait l'argument selon lequel cela devrait être une méthode dans la classe, car elle ne définit pas un attribut de la classe, et ne pouvait pas être étendue avec des paramètres. Y a-t-il des raisons pour lesquelles cela devrait être défini comme une propriété par rapport à une fonction?

Répondre

3

Je dirais que puisque c'est un simple Getter plutôt que quelque chose qui effectue réellement une action, il est beaucoup mieux adapté en tant que propriété. Son nom doit être changé pour refléter le fait qu'il s'agit d'une propriété, passant ainsi de GetAllAdults() à Adultes.

En outre, je voudrais également faire valoir que puisqu'il n'y a qu'un getter ... vous pourriez penser que la collection est en lecture seule, ce qui n'est pas le cas. Pour le rendre vraiment en lecture seule, vous devez exposer la propriété comme ReadOnlyCollection (si possible):

Public Property Adults() as ReadOnlyCollection(Of Adult) 
... 
End Property 
+0

Vous êtes rapide, chaque bonne idée que j'ai eu, je pourrais également trouver ici! J'ai démissionné et j'ai supprimé ma réponse :-P – jdehaan

+0

C'est en quelque sorte ma pensée. J'étais juste supposé, je n'avais jamais pensé aux possibilités d'utiliser des propriétés à la place des méthodes. – TreK

1

Définition de collections comme des propriétés, il est plus facile de faire la liaison de données.

0

Je renommerais simplement GetAllAdults() en Adultes() - de cette façon, vous satisferez la ligne directrice de la propriété définissant un attribut de la classe. Vous ne l'étendez pas comme vous l'avez dit, alors pourquoi créer de la fumée de code qui pourrait simplement être résolue dans les symantics?