Те из вас, кто работает в среде Visual Studio, как вы относитесь к тому, чтобы обернуть любой ваш код в #regions? (или если в любой другой IDE есть что-то подобное...)
9 из 10 раз, кодекс, сворачивающий средства, что Вы не использовали < href =" http://en.wikipedia.org/wiki/Separation_of_concerns" > SoC principle поскольку, что его ценность < br/> Я более или менее чувствую то же самое о частичных классах. Если у Вас есть часть кодекса, Вы думаете, слишком большое, Вы должны нарубить его в управляемом (и повторно используемый) части, не скрыть или разделить его < br/> Это укусит Вас в следующий раз, когда кто-то должен изменить его и не видеть логику, скрытую в 250 монстрах линии метода < br/>
< br/> Каждый раз, когда Вы можете, вытащить некоторый кодекс из главного класса, и в фабричный класс или помощника. < br/>foreach (var item in Items)
{
//.. 100 lines of validation and data logic..
}
не столь удобочитаемое как
foreach (var item in Items)
{
if (ValidatorClass.Validate(item))
RepositoryClass.Update(item);
}
Об этом говорилось на Coding Horror.
Лично я считаю, что они полезны, но, как и все остальное, в избытке может быть слишком много.
Я использую их для упорядочивания своих блоков кода:
Перечисления
Декларации
Конструкторы
Методы
Обработчики событий
Свойства
Иногда Вы могли бы работать над командой, где #regions поощряются или требуются. Если you' ре как я и Вы can' t выдерживают бездельничание со свернутым кодексом, Вы можете выключить выделение для C#:
В то время как я понимаю проблему что Джефф, и. al. имеют с регионами, что я don' t понимают, то, почему, совершая нападки < kbd> CTRL + < kbd> M < kbd> CTRL + < kbd> L расширить все регионы в файле настолько трудное иметь дело с.
Я использую #Region, чтобы скрыть ужасный и бесполезный автоматически произведенный кодекс, который действительно принадлежит автоматически произведенной части частичного класса. Но, работая со старыми проектами или обновленными проектами, Вы don' t всегда имеют ту роскошь.
Что касается других типов сворачивания, я сворачиваю Функции все время. Если Вы называете функцию хорошо, Вы никогда не должны будете смотреть внутри если you' ре, проверяющее что-то или (пере-) написание его.
Я использую Textmate (только для Mac), в котором есть сворачивание кода, и я нахожу его действительно полезным для сворачивания функций, я знаю, что делает моя функция "getGet", мне не нужно, чтобы она занимала 10 строк столь ценного экранного пространства.
Я никогда не использую ее для скрытия цикла for, оператора if и т.п., если только не показываю код кому-то другому, где я буду скрывать код, который они уже видели, чтобы не показывать один и тот же код дважды.
Я предпочитаю частичные классы в противоположность регионам.
Широкое применение регионов другими также производит мне впечатление, что кто-то, где-нибудь, нарушает Единственный Принцип Ответственности и пытается сделать слишком много вещей с одним объектом.
Частичные классы обеспечены так, чтобы Вы могли отделиться, инструмент самозародился кодекс от любого удовлетворения требованиям заказчика, которое Вы, возможно, должны сделать после того, как кодовый генерал внес свою лепту. Это означает, что Ваш кодекс остается неповрежденным после того, как Вы запускаете повторно codegen и doesn' t переписан. Это - хорошая вещь.
I' m не поклонник частичных классов - я пытаюсь развивать свои классы, таким образом, что у каждого класса есть очень ясная, единственная проблема для который it' s ответственный. С этой целью, я don' t полагают, что что-то с ясной ответственностью должно быть разделено через несколько файлов. That' s, почему я don' t как частичные классы.
После этих слов I' m на заборе о регионах. По большей части, я don' t используют их; однако, я работаю с кодексом каждый день, который включает регионы - некоторые люди идут действительно тяжелые на них (складывание частных методов в регион и затем каждого метода, свернутого в его собственный регион), и некоторые люди идут свет на них (складывающийся enums, складывая признаки, и т.д.). Мое общее правило большого пальца, на данный момент, состоит в том, что я только поместил кодекс в регионы если (a) данные, вероятно, останутся статичными или не будут затрагиваться очень часто (как enums), или (b) если есть методы, которые осуществлены из необходимости из-за подклассификации или абстрактного внедрения метода, но, снова, won' t затрагиваться очень часто.
Регионы никогда не должны использоваться в методах. Они могут привыкнуть к методам группы, но это должно быть обработано с чрезвычайной осторожностью так, чтобы читатель кодекса не сходил с ума. Нет никакого смысла в складных методах их модификаторами. Но иногда сворачивание может увеличить удобочитаемость. Для, например, группирующий некоторые методы, которые Вы используете для работы вокруг некоторых проблем, пользуясь внешней библиотекой и Вами won' t хотят посетить, слишком часто может быть полезным. Но кодер должен всегда искать решения как обертывание библиотеки с соответствующими классами в этом конкретном примере. Когда все остальное потерпит неудачу, используйте сворачивание для улучшения readibility.
Сворачивание региона было бы прекрасно если я didn' t должны вручную поддержать группировки региона на основе особенностей моего кодекса, которые являются внутренними языку. Например, компилятор уже знает it' s конструктор. IDE' s кодовая модель уже знает it' s конструктор. Но если я хочу видеть представление о кодексе, где конструкторы группируются, по некоторым причинам я должен вновь заявить о том, что эти вещи - конструкторы, физически размещая их вместе и затем помещая группу вокруг них. То же идет для любого другого способа нарезать класс/структуру/интерфейс. Что, если я передумал и хочу видеть общественный/защищать/частный материал, выделенный в группы сначала, и затем сгруппированный членским видом?
Используя регионы, чтобы разметить общественные собственности (например), настолько же плохо как входит в избыточный комментарий, который ничего не добавляет к тому, что уже различимо из самого кодекса.
Так или иначе, чтобы избежать необходимости использовать регионы с этой целью, я написал свободное, общедоступное Визуальное дополнение IDE Студии 2008 под названием Рты. Это обеспечивает сгруппированное представление автоматически, делая намного менее необходимым поддержать физическую группировку или использовать регионы. Вы можете найти его полезным.
Я обычно нахожу это, имея дело с кодексом как События в C# где there' s приблизительно 10 линий кодекса, которые являются на самом деле просто частью декларации событий (EventArgs классифицируют декларацию делегата и декларацию событий) Помещение региона вокруг них и затем сворачивания их из пути делает его немного более удобочитаемым.
Лично я постоянно использую #Regions. Я нахожу, что это помогает мне хранить такие вещи, как свойства, декларации и т.д. отдельно друг от друга.
Возможно, это тоже хороший ответ!
Edit: Dang, Pat опередил меня!
Я думаю это it' s полезный инструмент, когда используется правильно. Во многих случаях я чувствую, что методы и перечисления и другие вещи, которые часто свернуты, должны быть небольшими черными ящиками. Если Вы не должны смотреть на них по некоторым причинам, их содержание don' t вопрос и должен быть максимально скрыт. Однако я никогда не сворачиваю частные методы, комментарии или внутренние классы. Методы и enums - действительно единственные вещи, которые я сворачиваю.
Мой подход подобен немногим другим здесь, используя регионы, чтобы организовать кодовые блоки в конструкторов, свойства, события, и т.д.
There' s превосходный набор макроса VS.NET Роландом Вейджелтом, доступным из его записи в блоге, [Лучшая Клавишная Поддержка #region... #endregion] (http://weblogs.asp.net/rweigelt/archive/2003/07/06/9741.aspx). I' ve, используя их в течение многих лет, нанося на карту ctrl +. разрушиться текущий регион и ctrl ++, чтобы расширить его. Найдите, что это работает намного лучше, что дефолт функциональность VS.NET, которая сворачивается/разворачивает все.
[Кодирование Ужаса] (https://blog.codinghorror.com/the-problem-with-code-folding/) фактическая статья получила меня думающий об этом также.
Обычно я большие классы, я помещу регион вокруг членских переменных, констант и свойств уменьшить сумму текста, который я должен просмотреть и оставить все остальное за пределами региона. На формах я буду обычно группировать вещи в " членские переменные, константы и properties" функции формы и обработчики событий. Еще раз это - больше я don' t должны просмотреть много текста, когда я просто хочу рассмотреть некоторые обработчики событий.
Я действительно don' у t есть проблема с использованием #region, чтобы организовать кодекс. Лично, I' ll обычно установка различные регионы для вещей как свойства, обработчики событий и общественные/частные методы.
Затмение делает часть этого на Яве (или PHP с плагинами) самостоятельно. Позволяет Вам сворачивать функции и такой. Я склонен любить его. Если я знаю то, что делает функция и я не работаю над нею, я не должен смотреть на нее.