StyleCop здесь применяет некоторые вещи:
Внутри класса, структуры или интерфейса элементы должны располагаться в следующем порядке:
- Поля
- Конструкторы
- Финализаторы (деструкторы)
- Делегаты
- События
- Перечисления
- Интерфейсы
- Свойства
- Индексаторы
- Методы
- Структуры
- Классы
Кроме того, элементы упорядочиваются по доступу:
public
внутренний
защищенный внутренний
защищенный
частный
А также несколько других правил:
статические
элементы должны появляться перед элементами экземпляра . Это может быть хорошей отправной точкой. Что касается дополнительных правил упорядочивания, я обычно группирую связанные методы вместе.
Что бы вы ни делали, поместите его в свои стандарты и быть последовательными. Мы используем пользовательские конфигурацию регионатора для заказа наших методов. Все в команде используют ту же конфигурацию.
Редактировать: Сейчас мы используем resharper Очистка кода [113333] с помощью макета пользовательских элементов типа.
Я не заказываю их по модификатору доступа и не заказываю в алфавитном порядке. (Думаю, что это очень тяжело, когда добавляешь или переименовываешь метод в этом классе ... ).
При необходимости я группирую их по функциональности. То есть: Я ставлю родственные методы в другое место.
Но, если следовать SRP (Single Responsability Principle), то я думаю, что методы упорядочения в большинстве случаев не являются проблемой; так как, когда вы следуете SRP, в ваших классах будет не очень много методов.
Я группирую мой метод по функциональности, начиная от большинства родов до большинства бетона, все это внутри области, поэтому я могу скрыть ненужные детали Отказ
Поскольку Visual Studio имеет инструменты для быстрого количества навигации к способам по имени, я предпочитаю поставить частные переменные элемента и конструкторы, близкие к верхним и групповым методам по функциональным возможностям (т. Е. Методы помощника близки к методы, которые их называют). Я также группирую свойства вместе. Если класс становится существенным, я использую директивы # мероприятия, чтобы показать организацию.
I group my methods by their access modifier and in the following sequence:
Нет, большинство людей просто группируют методы логическим сходством или совсем не. Это на самом деле не имеет значения - классы тоже не должны получать Big, и с достойным IDE вы можете просто Ctrl + Click, чтобы перейти к любому определению метода в любом случае.
инструмент Microsoft StyleCop выполняет хорошую работу по определению порядка элементов внутри класса. Вы также можете написать расширения к инструменту для соответствия стандартам кодирования Вашей компании. Тем не менее, StyleCop является хорошей отправной точкой.
Я предлагаю сначала группировать интерфейс, они приходят через, с приятным комментарием, говорящим имя интерфейса - потому что это неочевидно.
Тогда по отношению, и только тогда сортировка по алфавиту.
Используйте много пустых строк, чтобы уменьшить когнитивную нагрузку читателя.
Я не уверен, что есть последовательно стандартный способ ... но я группирую связанные методы вместе, возможно, подгруппирован в Accessister. Делает его простым для нахождения связанных действий позже вниз по дорожке.
Я склонен найти группировку связанных методов гораздо более полезным при чтении чужого исходного кода, чем какой-то произвольный псевдо-порядок, такой как алфавит.
Хотя книга специально о Java, Дядя Боб Чистый код содержит некоторые превосходные общие принципы для читаемости в классах OO. В частности, он использует метафору хорошо написанной газетной статьи, с заголовком на вершине, за которым следует абзац с синоптом, а затем увеличивает детали, когда вы читаете дальше по статье. Направляясь на подобную структуру сверху вниз в ваших классах, это делает задачу чтения или понимания вашего кода намного проще для других.
Я использую NEVERNGE , который делает большинство вещей, которые я хочу: групповые поля, методы ... в алфавитном порядке и модификаторами доступа. Он также применяет некоторые правила COP Style (например, порядок типов элементов, местоположение использования операторов). Neverge настраивается в некоторой степени, вам не нужно жить с конфигурацией по умолчанию, если вам это не нравится.
Обновление: Теперь я использую Resharper, поскольку Norverange не работает правильно с более новым синтаксисом C #.