Dienstag, 2. August 2011

Methoden verständlich anlegen

Nicht selten benötigt eine Methode mehrere Parameter, um ihre Aufgabe zu verrichten. Gerade bei Ergänzungen, für die eine Methode nur geringfügig anders ablaufen soll, neigen viele dazu, einfach ein Boolean- oder Integer-Flag anzuhängen. Das verhindert unnötig redundanten Code, vermindert aber die Lesbarkeit. Das ist bei der Methodensignatur noch nicht weiter wild. Deklarations-Beispiel:
void doSomething(Document doc, String name, String value, boolean ignoreCase) wird aber beim Aufruf interessant, da bei den Flag-Parametern häufig keine Variable auf seiten des Aufrufers verwendet wird. Aufruf-Beispiel: doSomething(doc, name, value, true). Kommen solche Konstruktionen zustande, ist im Aufruf nicht erkennbar, wofür das Parameter steht. Besonders schlimm wird es, wenn sich solche Parameter häufen.

Als Lösung würde es sich anbieten, für den Aufruf zuvor eine Variable mit passendem Namen zu deklarieren, so dass der Aufrufparameter erkennbar wird. Aufruf-Beispiel: doSomething(doc, name, value, ignoreCase). Die Lesbarkeit wird damit verbessert, jedoch eine eigentlich nicht benötigte Variable deklariert, die ausschließlich durch den Methodenaufruf Verwendung findet.

Am ehesten würde aber vermutlich die Deklaration von Konstanten sinn machen, um die Lesbarkeit zu verbessern. So könnten für das Beispiel die Konstanten DO_IGNORE_CASE und DO_NOT_IGNORE_CASE mit dem jeweiligen boolean deklariert werden, so dass der Aufruf letztlich so aussieht: doSomething(doc, name, value, DO_IGNORE_CASE).

Am meisten hat es sich bewährt, anstelle eines weiteren Parameter, eine neue Methode anzulegen, die den Flag-Parameter im Namen trägt. Deklarations-Beispiel: void doSomethingIgnoreCase(Document doc, String name, String value). Damit werden unnötige Schnörkel, wie Variablen-Deklarationen vermieden und sowohl Lese- als auch Schreibfluss gefördert. Es ist nämlich auch beim schreiben angenehmer die passende Methode auszusuchen, anstelle mit den Flag-Parametern zu hadern. Leider ist diese Möglichkeit nicht in jedem Fall praktikabel oder Möglich. Dann würde ich am ehesten die Konstanten-Schreibweise bevorzugen.

Keine Kommentare:

Kommentar veröffentlichen