Мне нравится регионы и моя команда, и я чувствую код более читаемым с ними.
Вот те времена, когда я их люблю ...
Если у вас есть стандарт компании, чтобы писать модульные тесты с Устройте Act Assert (AAA), то вам может потребоваться юнит-тесты, чтобы выглядеть следующим образом
[test]
public void MyFunction_Test
{
#region Arrange
#endregion
#region Act
#endregion
#region Assert
#endregion
}
Мне очень нравится этот формат, особенно когда есть четкое разделение, и это вдохновляет других на то, чтобы что-то сделать правильно, например, правильно написать блок-тесты.
Другое место, где мне нравится регион, это код, когда вы знаете, что скоро собираетесь удалить код.
#region Drop this region next version when we drop 2003 support
public void DoSomeThingWithWindowsServer2003()
{
// code the is for Windows 2003 only
}
#endregion
Я также использую регионы для разделения различных частей моих классов, даже если класс очень мал.
#region Constructors
#endregion
#region Properties
#endregion
#region Events
#endregion
#region Methods
#endregion
#region Enums
#endregion
Обычно класс не будет иметь все из них (если это вы можете удивиться, если вы делаете слишком много в одном классе), но я думаю, что если вы ищете один метод или свойство, его приятно иметь одно место для просмотра. Не говоря уже о свойствах в ViewModel (MVVM anybody?), Использующем INotifyPropertyChanged, это 10 строк (9 строк плюс пробел), поэтому хорошо продуманный и хорошо написанный объект ViewModel с только 5 свойствами означает, что раздел свойств имеет не менее 50 строк кода.
Мне также особенно нравятся они при использовании плохо написанного кода другого человека. Глупо предположить, что вы всегда можете реорганизовать, чтобы использовать идеальный дизайн. Например, у вас есть класс с 2500 строк и более. Уверен, что это, вероятно, могло быть написано лучше, но вы этого не сделали, оно работает, и оно проверено, и ваш бизнес имеет код в «фиксированной» блокировке, поэтому рефакторинг не разрешен. Вы можете сделать слишком большой класс (плохо написанный или нет) гораздо более читаемым с помощью операторов #region. Вы получаете много преимуществ чтения от разделения проблем без фактического разделения класса, а затем, как только код выходит из строя, и вы можете реорганизовать, большая часть работы по разделению уже может быть выполнена с помощью #regions, и вы можете конвертировать ваши регионов в отдельный класс.
http://programmers.stackexchange.com/questions/53086/are-regions-an-antipattern-or-code-smell – Console