После ознакомления с Приложением 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? Рекомендации по дизайну каркаса? Полное игнорирование стиля? Готовите свой собственный стиль?





Вы принимаете решение. Если вам нравятся некоторые части одного и некоторые части другого, напишите собственное руководство по стилю. Если один вам нравится больше, чем другой, выберите его.
Главное, что нужно сделать, - это выбрать стиль; нет возможности оценить одно по сравнению с другим каким-либо строгим количественным способом.
Мы используем 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 # или без него это того стоит.
Отличный вопрос. Я тоже задавался вопросом об этом.