Słyszę dużo o skróceniu metod i słyszałem, jak wielu programistów twierdzi, że użycie tagów #region w metodzie jest pewnym znakiem, że jest ona zbyt długa i powinna zostać przekształcona w wiele metod. Wydaje mi się jednak, że istnieje wiele przypadków, w których oddzielenie kodu za pomocą znaczników #region w metodzie jest najlepszym rozwiązaniem do refaktoryzacji na wiele metod.
Załóżmy, że mamy metodę, której obliczenia można podzielić na trzy dość odrębne fazy. Co więcej, każdy z tych etapów jest istotny tylko dla obliczeń tej metody, więc wyodrębnienie ich w nowe metody nie powoduje ponownego użycia kodu. Jakie są zatem zalety wyodrębnienia każdej fazy z jej własnej metody? O ile mogę stwierdzić, zyskujemy tylko pewną czytelność i osobny zmienny zakres dla każdej fazy (co pomoże zapobiec przypadkowemu przerwaniu modyfikacji przez konkretną fazę).
Jednak oba z nich można osiągnąć bez wyodrębniania każdej fazy we własnej metodzie. Tagi regionalne pozwalają nam zwinąć kod do postaci, która jest równie czytelna (z dodatkową korzyścią, że nie musimy już zostawiać swojego miejsca w tym pliku, jeśli zdecydujemy się rozwinąć i zbadać kod), i po prostu zawijamy każdą fazę w {}tworzy własny zakres do pracy.
Zaletą robienia tego w ten sposób jest to, że nie zanieczyszczamy zakresu na poziomie klasy za pomocą trzech metod, które w rzeczywistości są istotne tylko dla wewnętrznych mechanizmów czwartej metody. Natychmiastowe przekształcenie długiej metody w szereg krótkich metod wydaje mi się być ponownym użyciem kodu równoważnym z przedwczesną optymalizacją; wprowadzasz dodatkową złożoność, aby rozwiązać problem, który w wielu przypadkach nigdy nie powstaje. Zawsze możesz później wyodrębnić jedną z faz we własnej metodzie, jeśli pojawi się możliwość ponownego użycia kodu.
Myśli?
#regiontagów, ale całkowicie wyłączam zwijanie kodu w Visual Studio. Nie lubię kodu, który próbuje się przede mną ukryć.