Вопрос

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

В любом случае, я хотел бы иметь всех, используя та же конвенция во всех классах (С предопределенным порядком всех регионов) вроде:

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

У вас есть какое-либо предложение, как это может выглядеть так (какие регионы имеют смысл и какие имена должны иметь) и в каком порядке они должны быть определены?

Это было полезно?

Решение

Моя конвенция не использовать их.

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

Другие советы

Кто-то однажды сказал, что наличие конвенции, как указано выше:

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

Как настроить таблицу, где все пластины вместе, все ложки вместе, все ножи вместе, и все вилки вместе.

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

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

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

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

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

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

#region Lotsa boring code and lookup tables

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

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

Private Member Variables
Constructor
Public Properties
Private Methods
Public Methods
Events

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

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

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

Поэтому никогда не дублируйтесь в комментариях или директивах региона, которые уже говорится в коде.

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

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

Вы можете быть заинтересованы в этом Вы говорите нет до областей C #.

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

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

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

Я написал свой собственный фрагмент кода собственного региона для 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>

Как вы можете видеть, я использую регионы для Variables, Construction/Destruction, Properties, Public а также Private методы. Я часто добавляю еще одну субрегию в частный регион под названием events. Отказ Порядок регионов также отлично работает с Стилекоп.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top