Ich habe heute meinen ersten C# Iterator geschrieben. Woohoo.Nebenwirkungen in einem Iterator als schädlich angesehen?
Interessanterweise hat es Nebenwirkungen. Mein Iterator filtert ungültige Dateien aus einem Verzeichnis heraus und gibt eine Sequenz gültiger Dateien zur Verarbeitung zurück. Wenn es eine intakte Datei findet, wird sie in ein anderes Verzeichnis verschoben.
Ich habe versucht, es als eine LINQ-Abfrage zu implementieren, aber wirklich nicht die Tatsache, dass das Prädikat für die Where-Klausel hat Nebenwirkungen. Das ist ein bestimmter Geruch.
Ich könnte es explizit implementieren, Schleifen über alle Dateien und Umgang mit dem Guten oder dem Schlechten wiederum, aber es ist nicht sehr elegant. Eine bessere Lösung besteht darin, sie in zwei Listen (gut und schlecht) aufzuteilen und jede für sich zu verarbeiten.
Aber dann erinnerte ich mich Iteratoren. Und ich habe jetzt einen Iterator, der die gültigen Dateien liefert und die ungültigen Dateien handhabt (verschiebt).
Also meine Frage ist das: Ist es eine schlechte Idee für einen Iterator solche Nebenwirkungen zu haben? Versteck ich zu viel Funktionalität in einem Iterator?
@sharptooth - sind Sie für ein Taxonomie Abzeichen oder was ist los? – annakata