Действительно ли директива #region полезна в .NET? - PullRequest
18 голосов
/ 04 октября 2008

После поддержки большого количества кода, усеянного #region (как в C #, так и в VB.NET), мне кажется, что эта конструкция - всего лишь куча "make work" для программиста. Это работа для того, чтобы ЗАПИСАТЬ все эти чертовы вещи в код, а затем они делают поиск и чтение кода очень раздражающими.

Каковы преимущества? Почему кодеры идут на дополнительные хлопоты, чтобы вставить это в свой код.

Сделай меня верующим!

Ответы [ 17 ]

2 голосов
/ 04 октября 2008

Продолжая то, что было сказано ранее Расселом Майерсом, если вы научитесь правильно реорганизовывать свой код (навык, которому должны овладеть опытные разработчики), в действительности не так уж много необходимости в регионах.

Пару недель назад я думал, что регионы были хорошими, потому что они позволяли мне скрывать мой жирный код, но после отработки моих навыков кодирования я смог сделать его более тонким, и теперь я вписываюсь в класс размера 7 (кто-то должен ТАК сделать что измерение для рефакторинга в будущем!: P)

1 голос
/ 23 февраля 2009

Я люблю регионы, потому что это помогает мне сосредоточиться только на том, над чем я работаю. Я использую их, даже если у класса есть метод.

Я использую фрагменты кода с уже заполненными регионами, что меньше набирает текст. Я чувствую, что класс более организован и делает то, о чем говорит Code Complete, чтобы другим людям было удобнее читать. Компилятор просто игнорирует их, теперь они должны сделать код более читабельным.

1 голос
/ 13 ноября 2008

Хорошие ответы, я согласен с ними, которые говорят, что это иногда отражает плохое кодирование и дизайн, но #region действительно полезен, если вы создаете документацию (стиль MSDN) с SandCastle. Допустим, у вас есть общедоступный API и существует некоторый базовый класс, для которого вы хотите привести пример использования. Затем вы должным образом задокументируете свои публичные методы и добавите пример региона, в который вы сможете скопировать и вставить некоторый код. Проблема в том, что когда / если ваш базовый класс меняется, вы должны в конечном итоге изменить пример. Лучшее решение - включить пример проекта кода в свое решение и собрать его все вместе, поэтому каждый раз, когда вы создаете свое решение, если образец кода не обновлен, он не будет компилироваться. Итак, какое отношение это имеет к регионам, которые вы сейчас спросите сами. Хорошо посмотрите на этот образец:

/// <example>
    /// The following code sample is an implementation of LoadPublishedVersion() for XmlPageProvider.
    /// <code source="../CodeSamples/EPiServerNET/PageProvider/XmlPageProvider.cs" region="LoadPublishedVersion" lang="cs"/>
    /// </example>

Обратите внимание, что есть ссылка на файл примера исходного кода и регион для метода, который вы хотите использовать в качестве образца в своей документации. Смотрите здесь результат . Этот метод должен находиться в соответствующем регионе и будет автоматически включен в вашу документацию. Вот почему я бы еще не выбросил # регион.

1 голос
/ 04 октября 2008

Как и любая языковая функция, регионы могут быть использованы не по назначению и злоупотреблениям, но они также имеют свои преимущества.

Они отлично подходят для создания "складных" групп вокруг:

  • методов, особенно если у вас много перегруженных методов
  • реализации интерфейса
  • операторские перегрузки

Вы также можете использовать его для группировки свойств, открытых / закрытых методов, событий, общеклассовых переменных и т. Д.

Я использую регионы в своем коде, чтобы помочь создать непротиворечивую структуру в моем коде, чтобы я всегда знал, где все находится с одного взгляда. Да, это усложняет процесс рефакторинга или добавления новых функций (особенно при автоматической генерации в Visual Studio), но я считаю, что это небольшая цена за то, чтобы поддерживать целостность и структурированность.

1 голос
/ 04 октября 2008

Их можно использовать слишком часто, но они мне нравятся для разделения частных методов, открытых методов, свойств и переменных экземпляра.

0 голосов
/ 24 марта 2009

Мой рабочий день начинается с открытия файлов в редакторе и нажатия «Развернуть все», чтобы скрыть все регионы. После этого я могу начать работать.

0 голосов
/ 04 октября 2008

Там действительно нет выгоды. Они являются запахом кода. После использования их некоторое время я заболел ими. Если вам нужно разобраться с функциональностью, используйте частичный класс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...