Question

Si une classe a trop de paramètres dans le constructeur, nous pouvons utiliser une structure ou un motif de constructeur.

Ce qui est mieux? Y a-t-il une bonne pratique?

Était-ce utile?

La solution

Utilisez une classe avec une structure qui répond à vos besoins. Martin Fowler a une technique similaire appelée DatatransferObject (DTO), dans lequel vous passez un modèle d'objet au lieu de récupérer les données à l'aide de plusieurs appels (appels de base de données persumatoires), réduisant le coût.

L'avantage sur le modèle du constructeur:

  1. La structure de classe n'a pas de logique supplémentaire, ce qui signifie qu'il est plus facile à lire (moins de logique)
  2. Ne créez pas Constructeur faisant de vraies œuvres L'odeur du code, rend encore le code plus facile à lire
  3. L'opération est bon marché, car vous venez de passer les références et de ne pas créer de tout nouvel objet. Surtout lorsque la structure des données est grande.

L'inconvénient: l'objet est à l'état mutable.

Autres conseils

Cela dépendrait des paramètres et de leur relation les uns avec les autres et du nombre requis par rapport à facultatif.

Si plusieurs paramètres sont liés, il est généralement préférable de créer une classe (ou une structure) distincte pour stocker ces paramètres.

Par exemple au lieu de

TransferMoney(long srcAccountNumber, int srcAmount, Currency srcCurrency, long destAccountNumber)

Nous pouvons voir que Src Ammount et Srccurrency sont liés et que nous pouvons créer une nouvelle classe pour gérer l'argent de divers montants (et éventuellement ajouter des méthodes pour la conversion en autres devises, etc.) et réduire le nombre de paramètres:

TransferMoney(long srcAccountNumber, Money amount, long destAccountNumber)

Cette question est la langue agnostique, mais si vous aviez un langage qui ne prend pas en charge les valeurs par défaut (comme Java), vous devrez peut-être avoir plusieurs méthodes surchargées avec un nombre et des types de paramètres différents pour s'adapter à toutes les combinaisons possibles. S'il y a beaucoup de combinaisons, alors un constructeur est un moyen plus propre à suivre.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top