Ich höre viel darüber, Methoden kurz zu halten, und ich habe viele Programmierer sagen hören, dass die Verwendung von #region-Tags in einer Methode ein sicheres Zeichen dafür ist, dass sie zu lang ist und in mehrere Methoden umgestaltet werden sollte. Es scheint mir jedoch, dass es viele Fälle gibt, in denen das Trennen von Code mit #region-Tags innerhalb einer Methode die überlegene Lösung für das Refactoring in mehrere Methoden ist.
Nehmen wir an, wir haben eine Methode, deren Berechnung in drei sehr unterschiedliche Phasen unterteilt werden kann. Darüber hinaus ist jede dieser Stufen nur für die Berechnung dieser Methode relevant. Wenn Sie sie also in neue Methoden extrahieren, wird der Code nicht erneut verwendet. Welche Vorteile hat es dann, jede Phase in eine eigene Methode zu extrahieren? Soweit ich das beurteilen kann, erhalten wir nur eine gewisse Lesbarkeit und einen separaten Variablenbereich für jede Phase (wodurch verhindert wird, dass Änderungen an einer bestimmten Phase versehentlich eine andere Phase unterbrechen).
Beides kann jedoch erreicht werden, ohne jede Phase in eine eigene Methode zu extrahieren. Region-Tags ermöglichen es uns, den Code in eine Form zu bringen, die genauso lesbar ist (mit dem zusätzlichen Vorteil, dass wir unseren Platz in dieser Datei nicht mehr verlassen müssen, wenn wir den Code erweitern und untersuchen möchten), und einfach jede Phase einzuschließen {}
erstellt einen eigenen Arbeitsbereich.
Dies hat den Vorteil, dass der Gültigkeitsbereich auf Klassenebene nicht mit drei Methoden verschmutzt wird, die eigentlich nur für das Innenleben einer vierten Methode relevant sind. Die sofortige Umgestaltung einer langen Methode in eine Reihe kurzer Methoden scheint mir die Wiederverwendung von Code zu sein, die einer vorzeitigen Optimierung entspricht. Sie führen zusätzliche Komplexität ein, um ein Problem anzugehen, das in vielen Fällen nie auftritt. Sie können eine der Phasen später jederzeit in eine eigene Methode extrahieren, falls sich die Möglichkeit zur Wiederverwendung von Code ergibt.
Gedanken?
#region
Tags, ich deaktiviere das Falten von Code in Visual Studio insgesamt. Ich mag keinen Code, der versucht, sich vor mir zu verstecken.