Использование #region в качестве быстрого исправления, чтобы избежать рефакторинга в более мелкие функции
Я часто вижу большие функции, состоящие из нескольких тегов #region. Быстро ли развивается # регион /#endregion как средство избежать рефакторинга в более мелкие функции?
В большинстве случаев код, определенный в блоке #region, может быть перемещен в отдельную функцию. Каково первоначальное намерение #region?
11 ответов
До partial
Visual Studio использовала его для отделения автоматически сгенерированного кода от пользовательского кода.
Регионы - это инструмент, как и все остальное. Если у вас есть для них применение... Гуди. Если нет, круто. Они позволяют вам закрывать и отделять целые блоки кода, чтобы разработчик мог быстро их упорядочить и найти. Если у вас есть область, называемая "Свойства", то ракеты-хирург не должен выяснить, что там находится. Таким образом, он может быть свернут и больше не будет мешать прокрутке страницы без необходимости.
Это элемент обслуживания, который может помочь разработчикам отслеживать свои классы, а может и не помогать им, а также избегать использования кода друг друга. Для тех, кто не находит их полезными, не используйте их. Для нашей команды мы определили стандарт для их использования, и мы в значительной степени придерживаемся этого стандарта. Простое выбрасывание вещей в регионы может усугубить проблему, поэтому всегда хорошо принять стандарт и придерживаться его (какой бы путь вы ни выбрали).
РЕДАКТИРОВАТЬ: я не могу думать о хорошем использовании для использования регионов в рамках конкретных методов. Это просто кажется мне беспорядком, но я не удивлюсь, если найду кого-то, кто найдет для него достойное применение (по их мнению).
Его ленивое кодирование. Если у метода есть #regions внутри него. Это должно быть преобразовано в меньшие методы.
Я использую, чтобы свернуть мой код в организованные группы, ни больше, ни меньше.
Его также можно использовать для разбиения класса на его различные разделы (например, методы, свойства). Я больше не большой поклонник этого.
Чтобы сделать код более читабельным и легким для просмотра. Это не просто что-то предназначенное для функций, это гораздо более полезно в области видимости класса. Например, вы можете сгруппировать различные виды методов, полей, свойств и т. Д.
Когда вы используете регионы внутри функций, вам следует рассмотреть возможность рефакторинга.
Есть много случаев - обычно в области классов, но иногда в области функций, где правила языка требуют создания большого количества повторяющегося кода. Хорошее использование #region - визуально заменить большой объем такого кода одной строкой, указывающей, что было заменено. Например, в VB, если кто-то хочет иметь много свойств только для чтения, подкрепленных частными полями для чтения и записи, можно объявить поля, а затем получить #region, описание которого "Простые свойства только для чтения для foo, bar, baz". и фнорд." Код для этих свойств будет состоять из 20 строк (плюс, как правило, пустая строка между каждым свойством), но любой, кто читает описание, точно знает, что эти двадцать строк скажут. Дайте дюжине программистов это описание вместе с объявлениями для переменных, и все они, вероятно, произведут идентичный символьный код (за исключением, возможно, межсимвольного интервала и комментариев). Зачем заполнять редактор таким беспорядком?
Я использую #region/#endregion, чтобы выделить часть общего кода. Таким образом, я могу сложить и убрать с дороги. Например:
#region Getters and setters
...
#endregion
в каждом классе, который я создаю. Они почти никогда не меняются, и мне не нужно, чтобы они загромождали мой взгляд во время работы в классе.
Я тоже не люблю его использовать, но я использовал его в одном конкретном случае, который приходит на ум. У меня есть инструмент для создания локального домена, который был создан для создания / настройки первоначальных сайтов клиентов, которые мы размещаем. В процессе создания есть около 20 разделов, поэтому я использовал блоки #region, чтобы разделить разделы... единственная цель - организация... но я случайно удалил целые блоки кода раньше, потому что тег свернутого региона был выбран в с другим кодом... я бы не советовал привыкать к их использованию.
Я делю членов своего класса на группы, используя #region
директивы. У меня есть разделы Константы, Поля, Свойства, Конструкторы, Переопределения и т. Д. В каждом из моих файлов (хотя не каждый присутствует каждый раз). Это мой личный стандарт кодирования, и он помогает мне быстро находить вещи. Я НИКОГДА не ставлю #region
направления внутри функций. Ваша функция, вероятно, слишком велика, если вам нужно #region
для этого.