Je suis en train d'écrire du code en C# et j'ai remarqué un scénario comme ci-dessous. Je me demande comment je peux rendre cela plus élégant et facile à entretenir.Méthode surchargée ou quelque chose de plus élégant?
Si je suivant le scénario avec
surchargepublic void DoSmtg(string a) { DoSmtg(a, 0, 0f); }
public void DoSmtg(string a, int x) { DoSmtg(a, x, 0f); }
public void DoSmtg(string a, int x, double d) { // method logic }
dire maintenant, je dois ajouter un autre paramètre bool. Je devrais modifier cela à
Ceci est un exemple très simple. Il est possible d'avoir 10 autres versions de la méthode DoSmtg(). Clairement, ce code sent. Alors que la saturation est tout à fait valable, il est évidemment difficile de maintenir ce code depuis:
il existe de nombreuses méthodes à écrire
il est évident que la méthode est appelée jusqu'à une enquête minutieuse (surtout si méthode a plus de paramètres)
- méthode
se poluted par la croissance liste des paramètres
le nouveau paramètre ajouté nécessite des changements à de nombreux endroits (pensez à la métho ds ci-dessus appelé à partir de nombreux endroits différents)
Ce qui serait un moyen élégant, simple et bon d'éviter quelque chose comme ça?
Si ces paramètres sont liés de quelque façon que ce soit, envisagez de les regrouper dans une classe et de faire de '.DoSmtg' une méthode de cette classe. –
Ce que @JeroenMostert a dit; Je tapais juste le même commentaire. :) Ou même si 'DoSmtg' n'est pas un membre de la classe, peut-être que les formals sont des données de configuration associées; alors il pourrait être utile de faire une abstraction spécifique à ce concept et de le passer à 'DoSmtg'. (Bien sûr, cela ne fait que déplacer le problème, maintenant vous avez le même problème pour les constructeurs de l'abstraction.) –
https://en.wikipedia.org/wiki/Builder_pattern – sstan