Существует ли стандартный способ организовать методы в классе? [дубликат]

39
задан Matthew 28 January 2010 в 16:35
поделиться

12 ответов

StyleCop здесь применяет некоторые вещи:

Внутри класса, структуры или интерфейса элементы должны располагаться в следующем порядке:

  • Поля
  • Конструкторы
  • Финализаторы (деструкторы)
  • Делегаты
  • События
  • Перечисления
  • Интерфейсы
  • Свойства
  • Индексаторы
  • Методы
  • Структуры
  • Классы

Кроме того, элементы упорядочиваются по доступу:

  • public
  • внутренний
  • защищенный внутренний
  • защищенный
  • частный

А также несколько других правил:

  • Контанты должны появляться перед полями
  • статические элементы должны появляться перед элементами экземпляра .

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

47
ответ дан 27 November 2019 в 02:38
поделиться

Что бы вы ни делали, поместите его в свои стандарты и быть последовательными. Мы используем пользовательские конфигурацию регионатора для заказа наших методов. Все в команде используют ту же конфигурацию.

Редактировать: Сейчас мы используем resharper Очистка кода [113333] с помощью макета пользовательских элементов типа.

7
ответ дан 27 November 2019 в 02:38
поделиться

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

При необходимости я группирую их по функциональности. То есть: Я ставлю родственные методы в другое место.

Но, если следовать SRP (Single Responsability Principle), то я думаю, что методы упорядочения в большинстве случаев не являются проблемой; так как, когда вы следуете SRP, в ваших классах будет не очень много методов.

3
ответ дан 27 November 2019 в 02:38
поделиться

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

1
ответ дан 27 November 2019 в 02:38
поделиться

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

1
ответ дан 27 November 2019 в 02:38
поделиться

I group my methods by their access modifier 
and in the following sequence:

  • public
  • internal
  • protected internal
  • protected
  • private

1
ответ дан 27 November 2019 в 02:38
поделиться

Нет, большинство людей просто группируют методы логическим сходством или совсем не. Это на самом деле не имеет значения - классы тоже не должны получать Big, и с достойным IDE вы можете просто Ctrl + Click, чтобы перейти к любому определению метода в любом случае.

0
ответ дан 27 November 2019 в 02:38
поделиться

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

0
ответ дан 27 November 2019 в 02:38
поделиться

Я предлагаю сначала группировать интерфейс, они приходят через, с приятным комментарием, говорящим имя интерфейса - потому что это неочевидно.

Тогда по отношению, и только тогда сортировка по алфавиту.

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

0
ответ дан 27 November 2019 в 02:38
поделиться

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

0
ответ дан 27 November 2019 в 02:38
поделиться

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

Хотя книга специально о Java, Дядя Боб Чистый код содержит некоторые превосходные общие принципы для читаемости в классах OO. В частности, он использует метафору хорошо написанной газетной статьи, с заголовком на вершине, за которым следует абзац с синоптом, а затем увеличивает детали, когда вы читаете дальше по статье. Направляясь на подобную структуру сверху вниз в ваших классах, это делает задачу чтения или понимания вашего кода намного проще для других.

1
ответ дан 27 November 2019 в 02:38
поделиться

Я использую NEVERNGE , который делает большинство вещей, которые я хочу: групповые поля, методы ... в алфавитном порядке и модификаторами доступа. Он также применяет некоторые правила COP Style (например, порядок типов элементов, местоположение использования операторов). Neverge настраивается в некоторой степени, вам не нужно жить с конфигурацией по умолчанию, если вам это не нравится.

Обновление: Теперь я использую Resharper, поскольку Norverange не работает правильно с более новым синтаксисом C #.

5
ответ дан 27 November 2019 в 02:38
поделиться
Другие вопросы по тегам:

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