Je suis en train de travailler sur un projet C# pour qui, jusqu'à présent, j'ai utilisé des objets immuables et les usines afin de s'assurer que les objets de type Foo
peut toujours être comparé pour l'égalité avec l' ==
. Foo
objets ne peut pas être changé une fois créé, et l'usine renvoie toujours le même objet pour un ensemble donné d'arguments. Cela fonctionne très bien, et tout au long de la base de code, nous supposons que ==
travaille toujours pour la vérification de l'égalité.
Maintenant, j'ai besoin d'ajouter quelques fonctionnalités qui présente un cas limite pour lequel cela ne fonctionne pas toujours. La meilleure chose à faire est de surcharger operator ==
pour ce type, de sorte qu'aucun autre code dans le projet qui doit changer. Mais ce qui me frappe comme une odeur de code: surcharge operator ==
et pas Equals
semble juste bizarre, et je suis habitué à la convention qu' ==
des contrôles de référence de l'égalité, et Equals
vérifie objet d'égalité (ou peu importe le terme).
Est-ce une préoccupation légitime, ou devrais-je simplement aller de l'avant et de surcharge operator ==
?