Ich frage mich, was die beste Vorgehensweise für das Refactoring von Code wäre, der so aussieht:
Wo sollten die Ausstiegskriterien festgelegt werden und was ist die beste Praxis
? %Vor%Danke
Ich behaupte, dass die beste Praxis sein sollte:
%Vor% Und Ausnahmen auslösen, wenn Sie das Versprechen, das DoMethod()
impliziert, nicht halten können, indem Sie einen Verb-Namen verwenden.
Wenn Sie absolut keine Ausnahmen auslösen möchten, verwenden Sie die von mquander vorgeschlagene Methode und benennen Sie Ihre Methoden um TryDoMethod1
, usw.
Wenn Sie sicherstellen müssen, dass alle ausgeführt werden (was Sie in Ihrem ursprünglichen Code nicht tun), können Sie eine der folgenden Möglichkeiten ausprobieren:
try
/ catch
, und Verwenden Sie AggregateException
, um alle Unterausnahmen für eine letzte throw
zu kombinieren. Lesen Sie diesen klassischen Artikel über "Arrow Code" Ссылка , um zu erfahren, wie "flattern" Sie, indem Sie die Fehler so schnell wie möglich zurückgeben.
Der Code Complete-Bereich auf "Arrow Code" finden Sie unter: Ссылка
@ mquanders Antwort ist ideal.
Der Punkt ist, sich aus der Angewohnheit eines einzelnen Ausgangspunktes zu befreien, dies wäre im Code erforderlich, wo Sie Ihr Gedächtnis verwalten müssten, weil Sie einen einzigen Platz benötigen würden, um die Zuweisung aufzuheben (ähnlich wie Sie) könnte finally
block) verwenden. Da .NET Ihren Speicher verwaltet, können Sie die Methode so schnell wie möglich verlassen, ohne sich Gedanken über Speicherlecks machen zu müssen und Ihre Methode lesbarer zu machen.
Was wäre falsch mit:
%Vor%... im aufrufenden Code und beseitigen Sie die Foo-Methode insgesamt
Ich würde sagen, das Ziel # 1 sollte ein Code sein, der leicht verständlich ist. Es ist schwer zu sagen, welche Struktur für den Code am besten ist, ohne die zugrundeliegende Funktionalität zu kennen und die Dinge entsprechend zu benennen.
Es gibt keine allgemeingültige Code-Struktur IMHO, es hängt alles von der Geschichte ab, die Sie mit Ihrem Code erzählen wollen.
Tags und Links .net c# refactoring