Definieren Sie zwei Methoden mit demselben Parametertyp

7

Heute bin ich auf ein Szenario gestoßen, in dem ich eine Methode erstellen muss, die dieselbe name, params count and params types mit einer existierenden teilt, etwa so:

%Vor%

Auf den ersten Blick habe ich nur gesagt, warum man es nicht mit einem anderen Namen nennt und die Dinge erledigt, aber ich konnte nicht! Ich möchte die Lesbarkeit meines Codes beibehalten, an dem ich arbeite, ich möchte, dass es overloaded zu dem ersten ist,
Also habe ich gesagt, warum nicht einen falschen Parameter nur zur Umgehung dieses Problems vom Compiler Point of View hinzuzufügen.

%Vor%

Was ist die beste Vorgehensweise für diesen Fall? Ich sehe, dass alle Wege meinen Code laufen lassen können, aber keiner von ihnen hat mich befriedigt.

    
Rami Shareef 28.07.2011, 12:17
quelle

4 Antworten

28

Die Lesbarkeit zu erhalten ist genau warum Sie es umbenennen sollten:

%Vor%

Nun, wann immer du die Methode nennst, ist es absolut offensichtlich was du meinst. Das ist sehr viel nicht der Fall, wenn Sie stattdessen die Methode überladen.

Ich bin immer zögerlicher geworden, im Laufe der Zeit zu überladen - es gibt etliche subtile Probleme und Lesbarkeit sehr oft untergeht.

    
Jon Skeet 28.07.2011, 12:20
quelle
5

Sie können Ihre Methodensignaturen aktualisieren und Ihren Code gleichzeitig lesbarer machen, indem Sie Folgendes tun:

%Vor%

Ich persönlich finde, dass das Hinzufügen von Ausführlichkeit zu Code anderen hilft, die später verstehen, was vor sich geht. Es hilft auch, Ihre Methoden leichter zu "lesen".

    
Brian Dishaw 28.07.2011 12:22
quelle
4

Definieren Sie 2 Methoden:

  1. public static Department GetDepartmentByDepartmentName(string departmentName)
  2. public static Department GetDepartmentByEmployeeID(string employeeID)
Kirill Polishchuk 28.07.2011 12:20
quelle
0

Eine andere Option wäre die Delegierung an andere Methoden, wenn Sie anhand des Arguments irgendwie zwischen einer Mitarbeiter-ID und einem Abteilungsnamen unterscheiden können.

%Vor%

Sie sollten das nur tun, wenn Sie aus Gründen der Übersichtlichkeit keine andere Methode hinzufügen können - die anderen Antworten sind zu 100% punktgenau.

    
Sean Bright 28.07.2011 12:49
quelle