Мне было интересно, существует ли стандарт для определения областей класса.
Я сейчас пользуюсь
Fields
Constructor
Properties
Public Methods
Private Methods
Fields
быть частной собственностью и Properties
быть публичной. Я обычно буду использовать субрегионы в этом случае, если потребуется, или буду иногда добавлять другие регионы ниже (такие как члены интерфейса или базового класса).
.net
programming-practices
Рейчел
источник
источник
#region
теги, чтобы определить раздел#region
sОтветы:
Связанные с классами Перечисления или иногда структуры / классы чистых данных (выше фактического определения класса)
--- определение класса ---
Частные участники
CTOR / DTOR, если в языке есть DTOR
Публичные свойства
Служебные методы (частные или защищенные методы с малой областью действия)
Функциональность класса (может быть разделена на несколько регионов в зависимости от области действия класса).
источник
Субрегионы? Есть ли у вашего класса единственная ответственность ? (подразумевается, что ... мой ответ: "Редко любые регионы, за исключением, может быть, группирования свойств, конструкторов и методов" ... но даже тогда я не так часто его использую)
источник
// ----------ViewModel Properties----------
Таким образом, вы все еще можете увидеть код (или свернуть его с выделением и увидеть членов). Регионы для сокрытия вещей. Код не должен быть скрыт, если он не создан автоматически или что-то в этом роде.Я просто хотел подтвердить, что вы имели в виду "#regions", а не макет класса в целом.
Я удивлен, что никто не упомянул, чтобы избежать использования регионов. Я понимаю, что ФП хочет провести опрос о планировании регионов, но я бы хотел поднять альтернативную точку зрения.
Я избегаю регионов. Мне нравится видеть код, с которым я работаю. Если вам трудно найти то, что вы ищете, используйте свертывание кода и сгруппируйте одинаковые конструкции классов вместе.
Почему я ненавижу регионы? CTRL+M,Lи CTRL+M,Oпереключит сворачивание кода. Однако при обрушении он скрывает весь регион. Мне нужно только свернуть методы / свойства / комментарии.
Если в регионе слишком много регионов, возможно, он пахнет кодом и ваш класс выполняет слишком много работы. Джефф Этвуд предлагает хороший пост по регионам, который стоит прочитать.
Моя любимая цитата на # регионах:
- Джефф Этвуд
При этом я знаю, что многие программисты настаивают на их использовании. Этот вопрос субъективен. Я просто думал, что предложу альтернативу.
источник
Это зависит от языка к языку. Поскольку я программист Delphi, я склонен следовать стандартному соглашению Delphi, которое выглядит следующим образом:
Я считаю, что это хороший способ организовать информацию, которую легко читать и понимать.
источник
public
сначала было удобнее перечислять , так как большинство пользователей заботятся только оpublic
вещах.Я склонен выкладывать их следующим образом:
Не использовался язык, который использует
Properties
, поэтому он не выложен. Я поместил закрытые методы и поля внизу, потому что, если кто-то еще использует этот файл в своем коде, им нужно только позаботиться о API, который является общедоступным. И все известные мне текстовые редакторы и даже IDE устанавливают курсор вверху при открытии файлов.источник
Это суждение для меня. Я использую регионы, когда они нужны для удобства чтения.
Я также использую другой цвет в моей цветовой схеме Visual Studio (в настоящее время темно-красный), чтобы выделить их из остального кода.
Пример использования #region: если я напишу тестовый метод для модульного теста, который требует многострочного фрагмента XML, строка XML нарушит обычные отступы (поскольку начинается с левого поля окно кода. Чтобы скрыть уродство, я оберну его в #region, чтобы я мог свернуть его.
источник
В книге « Чистый код» Боба Мартина вся 5-я глава посвящена форматированию. Есть пара ключевых моментов, которые я чувствую, суммируя это красиво.
Сохранение кода, размещенного с помощью обычно взаимодействующих элементов, расположенных вертикально друг от друга, эффективно устраняет необходимость создания определенных областей. Если ваш код настолько длинный, что требует, чтобы регионы скрывали много кода, возможно, это запах кода, указывающий на то, что класс пытается сделать слишком много. Возможно, некоторые функциональные возможности можно перенести в служебный класс или передать до предка.
Если вам нужно «спрятать» код, потому что он слишком длинный или слишком «некрасивый», то у вас, вероятно, есть большие проблемы, о которых нужно беспокоиться, чем использование регионов. Лично мне никогда не нужно их использовать, и когда я работаю над чужим кодом, я всегда обнаруживаю, что мне всегда нужно их все открывать, так зачем беспокоиться?
источник
Я в настоящее время разметка классов, как это:
а затем префикс уровня доступа к каждому объявлению (вроде, иногда группировать по доступу). Раньше я делал группировку верхнего уровня по доступу, но в какой-то момент я не знаю, когда, это не сработало так же хорошо, как и выше. Например, в C ++ / CLI (который я вынужден использовать в данный момент :-() вы можете сделать это, что испортит группирование по доступу:
источник
Сумасшедший крайний ответ: я не знаю, по крайней мере, когда дело доходит до C #. Между Visual Studio и R # я могу волшебным образом перемещаться к любому члену или реализации, поэтому нет смысла зацикливаться на этом; просто начните вводить, где находится курсор.
источник
Как и Уайетт и несколько других ответов, я также обычно избегаю использования регионов. Регионы имеют одну цель; чтобы скрыть код, на который вы не хотите смотреть. Если у вас в коде много кода, на который вам не нужно смотреть, и, следовательно, вам нужно много областей, чтобы можно было свернуть указанный код, то у вас, вероятно, слишком много кода в классе. ReSharper не учитывает регионы при выборе места для размещения нового кода, если только он не создал регион (что он делает для реализаций интерфейса).
Единственное использование регионов, которые я считаю приемлемыми, - это скрыть «неизбежно некрасивый» код; код, который имеет дело с конкретными деталями реализации, которые не могут быть внутренне хорошо спроектированы в соответствии с текущими стандартами. Обычно это продвинутый, эзотерический код, который обычно не следует путать со средним младшим программистом после его написания. Это такие вещи, как:
источник