-3
votes

Existe-t-il un travail approprié pour les méthodes de surcharge qui doivent prendre les mêmes types de valeur ou devraient-elles simplement être évitées?

Je suis la programmation en C # et c'est plus une question de pratiques optimales.

Je voulais créer une méthode surchargée et effectué accidentellement deux méthodes avec les mêmes types de valeur que des arguments. Je voulais utiliser le même nom de méthode pour garder des choses simples lorsque l'écriture de code plus tard, j'ai ajouté un autre argument d'intensité en tant que surcharge à la surcharge juste pour la séparer de la première méthode. Cela ne semble pas être une bonne pratique de codage pour moi, mais cela a fonctionné. P>

Exemple ici: P>

public static void SetBalance(Customer cust, int index)
{
    cust.Balance = balanceList[index];
}

public static void SetBalance(Customer cust, int value, int notUsed)
{
    cust.Balance += value;
}


2 commentaires

Pourquoi avez-vous besoin d'une méthode pour simplement définir une propriété? Setbalance () Ne fait rien de plus simple, plus court, plus propre ou plus clair pour tout acteur appelant Setbalance .


Pourquoi une méthode qui incristent l'équilibre étant donné le nom Set Solde? En tout état de cause, cela est au mieux "ne fais pas cela", et à la pire une question principalement basée sur l'opinion. Je pense que vous constaterez que chaque fois que vous rencontrez dans ce type de situation, il y a de meilleurs noms que vous pouvez choisir pour la méthode. Alors, fais ça.


3 Réponses :


-4
votes

Lorsque vous surchargez un constructeur, vous ne devez pas disposer de deux constructeurs avec le même modèle d'argument que xxx

comme exemple, les deux constructeurs ont le même motif d'argument afin que vous fines avec une erreur lors de la compilation. Pour contourner cela, échangez simplement les arguments sur le deuxième constructeur comme xxx

Cela évitera des conflits.


2 commentaires

IMO, l'échange de la commande rend difficile la lecture des surcharges d'IntelliSense que vous tapez (entre autres). Regardez le graphiques.Drawstring surcharge pour un exemple


Peut-être que vous devriez aussi faire la marque Microsoft. Parce que c'est où j'ai eu l'idée à l'origine!



2
votes

Vous ferez mieux de nommer la première méthode quelque chose comme Rafraîchissance , puisque la valeur résultante du solde du client n'est pas liée aux arguments présents dans la méthode.

La deuxième méthode serait mieux nommée quelque chose comme régalance ou incalbalance pour des raisons similaires. Deux méthodes avec des comportements clairement différents ne doivent pas avoir le même nom.


0 commentaires

1
votes

Le problème que je vois ici est la convention de dénomination. Ces deux méthodes effectuent différentes opérations, vous devez donc leur donner des noms propres à la configuration () et en complément () etc.


0 commentaires