Какая-либо.NET '#region директива' идеи конвенции? [закрытый]

10
задан PaN1C_Showt1Me 6 April 2010 в 08:10
поделиться

10 ответов

Мое соглашение - не использовать их.

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

37
ответ дан 3 December 2019 в 13:12
поделиться

Я использую следующие регионы:

Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events

Причина в лучшей организации кода.
Я работаю с файлами, которые могут содержать более 2000 строк кода, и очень сложно поддерживать код без областей.

3
ответ дан 3 December 2019 в 13:12
поделиться

Возможно, вас заинтересует , скажете ли вы «нет» регионам C # .

Я думаю, что пока вы последовательны в своем проекте, не имеет большого значения, в каком порядке вы их записываете. Также будьте очень осторожны, злоупотребляя ими (отсюда и первоначальная ссылка!).

Нет ничего хуже, чем найти закрытый конструктор, который скрывает только одну строку кода.

Думаю, в конце концов, дело в личном вкусе. Как я уже сказал, последовательность - это ключ!

1
ответ дан 3 December 2019 в 13:12
поделиться

Думайте о них как о другой форме комментариев: дополнительная информация, смешанная с вашим кодом, для которого не выполнялась формальная проверка . Следовательно, код, скорее всего, устареет.

Поэтому НИКОГДА не дублируйте в комментариях или директивах региона то, что уже указано в коде.

Добавляйте только дополнительную информацию.

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

2
ответ дан 3 December 2019 в 13:12
поделиться

Я думаю, что нет необходимости в регионах. Они неразборчивы. Если вам нужен (подумайте, действительно ли вам нужен?) Код количества в вашем классе, вы можете использовать «частичный» класс для разделения логических единиц класса.

3
ответ дан 3 December 2019 в 13:12
поделиться

Лично я бы не рекомендовал делать области кода частью вашего соглашения о коде. Основная причина в том, что в регионах скрывается код , что потенциально может привести к таким проблемам, как:

  • Разработчики могут пропустить некоторую важную часть исходного кода
  • Среднее {{1} } количество LOC в том же файле имеет тенденцию к увеличению

Если вы заинтересованы в обеспечении соблюдения соглашения о стилях кодирования в вашей команде, взгляните на Microsoft StyleCop . Обратите внимание, что этот инструмент в настоящее время работает только для C #.

6
ответ дан 3 December 2019 в 13:12
поделиться

Кто-то однажды сказал, что соглашение, подобное приведенному выше:

  • Частные поля
  • Конструкторы
  • Свойства класса
  • Обработчики событий
  • и т. Д.

похожи на сервировку стола, где все тарелки вместе, все ложки вместе, все ножи вместе и все вилки вместе .

Я считаю, что проблема #region состоит в том, чтобы объединить связанные методы, определения событий и свойства в одном регионе. Однако необходимость этого вообще указывать на запах кода (либо ваш класс слишком велик, либо делает слишком много вещей), но это хороший первый шаг к его рефакторингу в лучший класс.

12
ответ дан 3 December 2019 в 13:12
поделиться

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

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

6
ответ дан 3 December 2019 в 13:12
поделиться
#region Lotsa boring code and lookup tables

Я использую его для экономии места на экране, ничего больше :)

3
ответ дан 3 December 2019 в 13:12
поделиться

Я написал свой собственный фрагмент кода региона для VS 2008, который я всегда использую:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
<CodeSnippet Format="1.0.0">
    <Header>
        <Title>#class region</Title>
        <Shortcut>#classregion</Shortcut>
        <Description>Code snippet for #region in classes</Description>
        <Author>Simon Linder</Author>
        <SnippetTypes>
            <SnippetType>Expansion</SnippetType>
            <SnippetType>SurroundsWith</SnippetType>
        </SnippetTypes>
    </Header>
    <Snippet>
        <Declarations>
            <Literal>
                <ID>name</ID>
                <ToolTip>Region name</ToolTip>
                <Default>MyRegion</Default>
            </Literal>
        </Declarations>
        <Code Language="csharp">
            <![CDATA[#region Variables
                    $selected$ $end$
                #endregion

            #region Construction/Destruction
                    $selected$ $end$
                #endregion

            #region Properties
                    $selected$ $end$
                #endregion

            #region Public Methods 
                    $selected$ $end$
                #endregion

            #region Private/Proteced Methods
                    $selected$ $end$
                #endregion]]>
        </Code>
    </Snippet>
</CodeSnippet>

Как видите, я использую регионы для переменных , Строительство / Разрушение , Свойства , Общедоступные и Частные методы. Я часто добавляю в частный регион еще один подобласть, называемый событиями . Порядок регионов также отлично работает с StyleCop .

1
ответ дан 3 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: