2008-11-10 8 views

Répondre

4

En cas de doute, considérez la maintenance de votre code comme une ligne directrice.

Si OrderRequiresPayment est déterminé très simplement (par exemple, définir true à la création d'une commande, false lorsque le paiement est reçu), une propriété est correcte.

Si elle est déterminée par une formule ou si elle est mise à jour à plusieurs endroits, il est probablement préférable de l'encapsuler dans une fonction.

1

Ceci est une question spécifique à la langue.

En Python, par exemple, les règles métier peuvent (et sont souvent) à la fois.

Principalement, ce sont des fonctions de méthode. Toutefois, Python leur permet d'apparaître comme des propriétés si cela est plus facile pour les yeux lors de la lecture du code.

Notez que

  1. Les règles métier sont - en général - méthode fonctionne. Parfois, ils sont des relations entre les objets. Les fonctions de méthode sont faciles à développer et à modifier. Démarrer avec une propriété est une erreur lorsque vous devez ajouter des fonctionnalités et modifier une propriété en fonction de méthode.

  2. Les propriétés sont mieux utilisées comme sucre syntaxique pour faire ressembler une fonction à une propriété car elle simplifie la lecture du code.

0

Vous pouvez généralement décider s'il est plus logique de considérer cela comme une propriété d'entreprise ou une fonction d'entreprise. Le niveau d'abstraction ne change pas votre façon de penser les choses.

0

Je suis d'accord avec Adam. Habituellement, une propriété contiendra une valeur telle que Nombre, Longueur, etc.

1

Généralement, une propriété ne devrait pas nécessiter de calculs complexes.

Une propriété promet d'être très rapide, contrairement à une fonction (ou une méthode). Donc, une valeur qui est calculée ou qui pourrait prendre un certain temps à récupérer devrait être une méthode et une valeur qui est instantanément prête peut être une propriété.

1

Je déteste les animaux lorsque l'accès à une propriété provoque le changement de l'état d'un objet. Les propriétés doivent révéler quelque chose à propos de l'état existant d'un objet, tandis que les fonctions peuvent être utilisées pour provoquer une modification de l'objet. La modification de l'état d'un objet lors de l'accès aux propriétés rend le débogage très difficile - un développeur s'attend généralement à ce que quelque chose se produise et l'utilisation du débogueur ne permet pas l'exécution d'une fonction, sauf si les résultats sont prêts.D'autre part, la plupart des débogueurs accèdent automatiquement aux propriétés publiques sur un objet, sans attendre que l'état de l'objet change simplement en accédant aux propriétés.

Questions connexes