Как устранить несоответствие между "стилем C# StyleCop" и "стилем C# Руководства по дизайну фреймворка"?

После ознакомления с Приложением A «Соглашения о стилях кодирования C#» к великой книге «Рекомендации по дизайну фреймворка» (2-е издание от ноября 2008 г.) я совершенно не понимаю, какой стиль кодирования Microsoft использует для внутренних целей / рекомендует.

В записи блога Краткая история стиля C# утверждается:

In fact, the differences between the "StyleCop style" and the "Framework Design Guidelines style" are relatively minor

На мой взгляд, различия весьма заметны. StyleCop говорит, что открывающая скобка должна быть на отдельной строке, в Руководстве по дизайну Framework говорится, что она должна быть после открывающего утверждения. StyleCop говорит, что все ключевые слова должны сопровождаться пробелом, в Руководстве по дизайну фреймворка говорится: «избавьтесь от всех пробелов» (даже вокруг бинарных операторов).

Мне особенно иронично это правило из книги Framework Design Guidelines (стр. 366, 6-е правило сверху):

Do not use spaces before flow control statements

Right: while(x==y)
Wrong: while (x == y)

Это явно указывает на то, что стиль StyleCop - неправильный (пробел после ключевого слова while, пробелы до и после бинарного оператора равенства).

В конце концов, код, отформатированный с использованием стиля StyleCop, имеет совершенно иное «ощущение», чем код, отформатированный с использованием стиля Framework Design Guidelines. Следуя стилю Framework Design Guidelines, нужно отключить кучу правил (И нет правил, которые проверяют соблюдение стиля Framework Design Guidelines ...).

Может ли кто-нибудь (возможно, инсайдеры MSFT?) Пролить свет на это расхождение?

Как ваша команда справляется с этим? После StyleCop? Рекомендации по дизайну каркаса? Полное игнорирование стиля? Готовите свой собственный стиль?

Отличный вопрос. Я тоже задавался вопросом об этом.

Patrik Svensson 09.01.2009 03:27
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
14
1
1 754
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

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

Главное, что нужно сделать, - это выбрать стиль; нет возможности оценить одно по сравнению с другим каким-либо строгим количественным способом.

Мы используем StyleCop для всего нашего кода, и, за исключением нескольких незначительных мелочей, я считаю, что большинство его стандартов приводят к наиболее читаемому коду. Многие из его стандартов активно обсуждались в Microsoft и получали отзывы от сообщества, и хотя не ожидается, что все согласятся со всем, это, вероятно, лучший из существующих `` стандартов '' (особенно потому, что он позволяет автоматически проверка и автоматическая коррекция с помощью плагина StyleCop для ReSharper).

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

public int Prop
{
    get;
    set;
}

... но мы подняли запрос на изменение, чтобы разрешить однострочные свойства (то есть все в одной строке), поскольку это не менее читаемо и занимает меньше места. Он внес это изменение в течение нескольких дней.

Ответ принят как подходящий

В блоге, который я прочитал об этом (похоже, я не могу найти URL-адрес), было сказано: руководящие принципы фреймворка основаны и развиваются из руководства C++ (все они опытные разработчики C++), в то время как рекомендации stylecop представляют собой более современные новые рекомендации только для C# ... Оба хороши, принимайте решение сами ... Я лично использую StyleCop.

Я думаю, эта статья команды stylecop объясняет, о чем вы спрашиваете. http://blogs.msdn.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx

И чтобы ответить на вторую часть вашего вопроса, наша команда только начала использовать StyleCop, используя все правила (некоторые люди выбирают, какие из них использовать). Единственное, что мне не нравится, это дополнительное время, которое требуется, но использование такого инструмента, как StyleCopForResharper, позволяет сделать это намного быстрее. Раньше меня очень раздражало, когда люди писали код, который выглядел иначе, чем я бы его написал, но теперь, когда мы используем StyleCop, все коды выглядят одинаково. Больше не прикусывай губу из-за того, что делают люди.

Совершенно согласен, что лучше, если все будут использовать один стиль. По этой причине я создаю проект с открытым исходным кодом, в котором основные правила заключаются в том, что он не должен вызывать предупреждений StyleCop (или FxCop). Таким образом, все будут на одной странице. Даже если мне не нравятся какие-то правила, по крайней мере, мне не приходится ни с кем спорить, потому что я тоже не писал правила. И лично время, которое я трачу на набор кода, намного меньше, чем время, которое я трачу на размышления о том, что писать, поэтому с R # или без него это того стоит.

Camilo Martin 27.03.2012 22:34

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