2015-03-12 1 views
17

Я использую StyleCop довольно долго (и я привык к нему). Мой друг порекомендовал мне также попробовать CodeMaid. Первое, что я заметил, - это различие в организации использования.CodeMaid vs Организация создания стиля Stylecop

Stylecop заказывает заказы в алфавитном порядке, где перечислены системные сообщения, а не системные данные перечислены ниже.

CodeMaid заказывает заказы также в алфавитном порядке, но не заказывает систему сначала. Это только заказы usings по алфавиту

Еще одна вещь, которую я наткнулся на то, что CodeMaid позволяет иметь usings вне пространства имен (и, насколько я знаю, это лучше размещать все usings в пределах пространства имен)

Я хотел спросить, каков надлежащий порядок использования и, в конце концов, почему?

+1

Чтобы быть откровенным, я бы доверял StyleCop - MS Brand/tool. Он был разработан внутренне, а затем обнародован несколько лет назад, поэтому рекомендации естественно встроены в StyleCop. Я думаю, это зависит от ваших потребностей больше, чем что угодно, кроме лично, StyleCop. –

+1

Возможный дубликат [C# с использованием заказа на размещение пространства имен] (http://stackoverflow.com/questions/6543107/c-sharp-using-namespace-statement-ordering) –

+0

Порядок использования директив не имеет значения; позиция использования директив не имеет значения. Фактически, если вы немного разбираетесь в MSDN, они вызываются с использованием директив по какой-либо причине; они предоставляют информацию компилятору, но не отображаются в IL. –

ответ

44

Отказ от ответственности: Я написал CodeMaid.

  1. Для того чтобы система с использованием утверждений была первой, Microsoft изменила свои предпочтения по умолчанию в Visual Studio 2012, когда они начали вводить «Windows». сборок. Подробнее здесь: Using Directives Sorted in Wrong Order

Вы можете легко изменить обратно в VS2010 по умолчанию в Tools-> Options-> Текст editor-> C# -> Дополнительно -> "директивы Place 'System' первой при сортировке usings". CodeMaid уважает предпочтение Visual Studio, которое по умолчанию не ставит системные директивы.

  1. Для использования операторов, находящихся внутри пространства имен, в нашем отставании содержится поддержка https://trello.com/c/CLRxsIyc. StyleCop может утверждать его как стандарт, но если вы посмотрите на примеры MSDN, шаблоны Visual Studio и т. Д., Вы обнаружите, что использование операторов за пределами пространства имен является гораздо более условным.В этом вопросе много дискуссий, и наша цель - поддерживать оба подхода.

Надеюсь, что это поможет. :)

+2

Рад услышать и новости Стив. +1 – Kajiyama

5

Нет «правильного» заказа, только условностей. StyleCop-х SA1210 rule прямо говорится, что System пространства имен размещены первый:

Нарушение этого правила возникает, когда с помощью директивы не сортируются в алфавитном порядке имен. Сортировка директив по использованию в алфавитном порядке делает код более чистым и более легким для чтения и может помочь упростить идентификацию пространств имен, используемых кодом. Пространства имен System являются исключением из этого правила и всегда будут предшествовать всем другим пространствам имен. См. SA1208 для получения более подробной информации.

Rule SA1208 утверждает, что System пространств имен должны быть перед другими пространствами имен, а также рассуждения:

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

Правила Stylecop являются условностями, а Codemaid выбрал несколько иное соглашение. Выберите тот, который вам нравится, и перейдите к более важным решениям.

См. this question относительно наличия using утверждений за пределами пространства имен.

+0

Спасибо за ссылку, я знаю об этом, и я прочитал ее несколько лет назад, поэтому я упомянул «как фас, как я знаю» часть – Kajiyama

Смежные вопросы