Я багато чую про те, щоб тримати методи коротко, і я чув багато програмістів, які говорять про те, що використання тегів #region у методі є вірною ознакою того, що він занадто довгий і його слід переробити на кілька методів. Однак мені здається, що існує багато випадків, коли розділення коду з тегами #region у методі є найкращим рішенням для рефакторингу на кілька методів.
Припустимо, у нас є метод, обчислення якого можна розділити на три досить чіткі фази. Крім того, кожен з цих етапів має значення лише для обчислення цього методу, і тому вилучення їх у нові методи не приносить нам ніякого використання коду. У чому ж полягають переваги вилучення кожної фази у її власний метод? Наскільки я можу сказати, все, що ми отримуємо, - це певна читабельність та окрема змінна область для кожної фази (що допоможе запобігти випадковому порушенню іншої фази модифікацій певної фази).
Однак і того, і іншого можна досягти, не вилучаючи кожну фазу у свій метод. Теги регіонів дозволяють нам згортати код у форму, яка так само читається (з додатковою перевагою, що нам більше не доведеться залишати своє місце в цьому файлі, якщо ми вирішимо розширити і вивчити код), а також просто перевести кожну фазу в {}
створює власну сферу роботи.
Користь зробити це таким чином полягає в тому, що ми не забруднюємо область рівня класу трьома методами, які насправді стосуються лише внутрішніх функцій четвертого методу. Мені здається, що негайне рефакторинг довгого методу на низку коротких методів - це повторне використання коду, рівнозначне передчасній оптимізації; ви вводите додаткову складність, щоб вирішити проблему, яка в багатьох випадках ніколи не виникає. Ви завжди можете витягти одну з фаз у свій метод пізніше, якщо з’явиться можливість повторного використання коду.
Думки?
#region
теги, я взагалі вимикаю складку коду у Visual Studio. Мені не подобається код, який намагається приховати від мене.