Wenn Sie eine Methode umbenennen, wird sie nicht mehr überladen. An und für sich macht das Überladen den Code nicht unbedingt weniger lesbar, es kann jedoch schwieriger sein, der Implementierung zu folgen, wenn die Syntax nicht klar ist.
Viele Sprachen verwenden Methodenüberladung als Mittel, um eine Schnittstelle für Funktionen bereitzustellen, bei denen die Parameter optional sein können und Standardeinstellungen für die optionalen Parameter impliziert sind. Dies gilt insbesondere für Sprachen, die keine Standardparametersyntax in der Methodendeklaration unterstützen.
Also mach das:
void MyMethod(int param1, int param2 = 10)
{
...
}
erspart Ihnen dies:
void MyMethod(int param1)
{
MyMethod(param1, Param2Default);
}
void MyMethod(int param1, int param2)
{
....
}
Was lesbarer ist, hängt wirklich von Ihnen ab. Persönlich bevorzuge ich die zweite Option, insbesondere wenn die Parameterliste etwas lang wird, aber ich nehme an, dass es nicht wirklich wichtig ist, solange Sie in Ihrer API konsistent sind.
Die Schwierigkeit beim Überladen entsteht, wenn Sie Funktionen wünschen, die im Wesentlichen dasselbe tun, und wenn Sie möchten, dass die Parameterlisten gleich sind, die Rückgabetypen jedoch unterschiedlich sind. Die meisten Sprachen können nicht zwischen zwei gleichnamigen Methoden mit unterschiedlichen Rückgabetypen unterscheiden. An diesem Punkt müssen Sie überlegen, ob Sie entweder Generika verwenden, die Parameterschnittstelle ändern oder eine Ihrer Methoden umbenennen möchten, um den Unterschied im Rückgabetyp anzuzeigen. Hier kann die Lesbarkeit zu einem großen Problem werden, wenn Sie sich nicht für ein einfaches und klares Benennungsschema entscheiden, um mit solchen Situationen fertig zu werden.
Nennen Sie Ihre überladenen Methoden GetSomething()
und GetSomethingEx()
sagen Sie nicht viel darüber aus, was die Unterschiede zwischen Ihren Methoden sind, besonders wenn es die Rückgabetypen sind, die die einzigen Unterschiede zwischen ihnen sind. Auf der anderen Seite,GetSomethingAsInt()
und GetSomethingAsString()
erzählen Sie ein wenig mehr über das, was die Methoden tun, und zwar nicht unbedingt eine Überlastung zu tun zeigen , dass die beiden Methoden tun ähnliche Dinge, aber unterschiedliche Werttypen zurück. Ich weiß, dass es andere Möglichkeiten gibt, Methoden zu nennen, aber zum Zwecke der Veranschaulichung sollten diese groben Beispiele dies tun.
Im OPs-Beispiel ist das Umbenennen nicht unbedingt erforderlich, da die Methodenparameter unterschiedlich sind. Es macht jedoch die Benennung einer Methode etwas klarer. Am Ende kommt es wirklich auf die Art der Benutzeroberfläche an, die Sie Ihren Benutzern präsentieren möchten. Eine Entscheidung darüber, ob Sie nicht überladen möchten, sollte nicht ausschließlich auf Ihrer eigenen Wahrnehmung der Lesbarkeit beruhen. Das Überladen von Methoden kann beispielsweise eine API-Schnittstelle vereinfachen und die Anzahl der Methoden verringern, an die sich ein Entwickler erinnern muss. Andererseits kann es die Schnittstelle in einem Maße verschleiern, dass ein Entwickler die Methodendokumentation lesen muss, um zu verstehen, welches Formular verwendet wird der zu verwendenden Methode, wohingegen eine Reihe von Methoden mit ähnlichem und dennoch beschreibendem Namen es offensichtlicher machen kann, nur einen Methodennamen hinsichtlich seines Zwecks zu lesen.