Ich habe ein starkes Gefühl gegen Methoden mehrere Ergebnisse für die weitere Mehrfachbelegung der Rückkehr, wie folgt aus:Gibt mehrere Ergebnisse ein Antipattern zurück?
class ImportUsersFromFile
def perform
...
[imported_rows, errors]
end
end
, da es eine dunkle und inobvious Datenstruktur „ein Array einführt, erstes Element von denen diese Sache ist und das zweite ist das andere Ding ". Es wäre in Ordnung, wenn es offensichtlich wäre, dass die Methode eine solche Struktur zurückgeben sollte. Zum Beispiel ist es in Ordnung, drei Werte first_name, middle_name, last_name
von einer Methode wie Person#name_parts
zu erwarten.
Aber ich kann meine Meinung mit nichts außer meinen Wörtern unterstützen. Wird ein Mehrfachergebnis als ein Anti-Pattern- oder Code-Geruch angesehen? Würde gerne einige Links haben.
Ihr Code gibt ein Array zurück, das mit der Destrukturierungsfunktion von Ruby mehrere Werte eingeben kann. Was ist falsch an einem Array? BTW: Warum nicht Fehler erhöhen, anstatt sie in die Rückgabewerte zu setzen? – sschmeck
Ich erklärte in diesem Fall, was mit der Destrukturierung des Arrays falsch ist: die Schnittstelle ist nicht klar. Eine Sache ist zu erwarten, dass "perform" die Liste der importierten Benutzer zurückgibt, und andere Sache ist zu wissen, dass es wirklich ein Array von zwei Listen zurückgibt. In meinem Fall werden Fehler nicht ausgelöst, da sie nicht außergewöhnlich sind - wenn in einigen Zeilen Fehler auftreten, sollten trotzdem andere Zeilen importiert werden. – Hnatt
Dann gibt Ihre Methodenschnittstelle zwei Buckets zurück, einen mit den guten Zeilen und einen mit dem schlechten. Es klingt vernünftig für mich, aber nicht wie ein Antipattern. Wenn die Fehlerfälle keine Rolle spielen, dann ignoriere sie explizit wie 'users, _ = importer.perform'. – sschmeck