Angenommen, ich habe eine Reihe von Läufern, mit denen ich den größten Läufer, den schnellsten Läufer und den leichtesten Läufer finden muss. Die am besten lesbare Lösung scheint zu sein:
runners = getRunners();
tallestRunner = getTallestRunner(runners);
fastestRunner = getFastestRunner(runners);
lightestRunner = getLightestRunner(runners);
..wobei jede Funktion über die Läufer iteriert und die größte Höhe, die größte Geschwindigkeit und das niedrigste Gewicht verfolgt. Dreimal über das Array zu iterieren, scheint jedoch keine sehr gute Idee zu sein. Es wäre stattdessen besser zu tun:
int greatestHeght, greatestSpeed, leastWeight;
Runner tallestRunner, fastestRunner, lightestRunner;
for(runner in runners){
if(runner.height > greatestHeight) { greatestHeight = runner.height; tallestRunner = runner; }
if(runner.speed > ...
}
Dies ist zwar nicht zu unlesbar, kann jedoch unübersichtlich werden, wenn für jede in der Iteration extrahierte Information mehr Logik vorhanden ist.
Was ist der Mittelweg hier? Wie kann ich nur eine einzige Iteration verwenden, während der Code in logische Einheiten unterteilt bleibt?