Variablen Zuweisung in einer Methoden-Übergabe

3Cyb3r

Erfahrenes Mitglied
Hallo,

ich wollte Fragen ob es unsauber ist oder nicht fukntioniert wenn ich eine Variable in iner Übergabe zuweise:

Java:
// normal
words[i] = cutSuffix(words[i], findSuffix(words[i]));
wordCounts.add(words[i], 0);

Java:
// anders
wordCounts.add(words[i] = cutSuffix(words[i], findSuffix(words[i])), 0);

MFG und Danke^^
 
Unsauber ;)

Die Zuweisung wird vor dem Leser "versteckt", der Code liest sich dadurch weniger flüssig...
Das ist natürlich irgendwo Geschmackssache, aber Quellcode wird immer wieder gelesen (möglicherweise von vielen verschiedenen Leuten) und sollte sollte deshalb so leicht verständlich wie möglich geschrieben sein!
 
Ich würde es auch nicht so machen. Finde es sehr schlecht zu lesen. In manchen Fällen gefällt es mir aber gut, wie z.B. bei Streams.

Java:
while((b = in.read()) != -1) {
    //Es wurde etwas eingelesen
}
 
Der code ist aus dem Kontext gebracht, aber ich finde auch den Ursprungscode schwer verständlich. Was genau macht der denn? Der Leser muss das mehrfach durchlesen, um grob zu verstehen worum es geht.

Es wird der Suffix gesucht, abgeschnitten und letztlich werden die Wörter gezählt. Allerdings ist die Reihenfolge unklar und die genauen Details.

Die zweite Variante ist aber völlig OK, wenn du Levels of Abstraction beachtest und das in eine Methode kapselst die letztlich genau das ausdrückst was du machen möchtest

Beispiel
Java:
private int countWordsWithoutSuffix(String[] words) {
    wordCounts.add(words[i] = cutSuffix(words[i], findSuffix(words[i])), 0);
}

Dort wo die Methode benutzt wird interessiert es den Leser vorerst nicht, wie es implementiert ist, daher ist das auf diesem Abstraktionslevel, also in der Methode, völlig ok.

Siehe Clean Code von Robert C. Martin. - Single Level of Abstraction

Gruß
 
Zurück