Я приставлю, сказав, что я понимаю, что как Code Analysis, так и StyleCop означают как рекомендации, и многие люди решили игнорировать их в любом случае. Но, сказав это, я хотел бы посмотреть, что общего согласия в отношении этих двух правил.CA1500 против SA1309 - Какой выигрывает?
Rule CA1500 говорит, что имена параметров и частные имена полей не совпадают.
Rule SA1309, с другой стороны, говорит, что не префикс элементов с подчеркиванием или «m_».
Это оставляет нам небольшие возможности для выделения частных полей поддержки из их соответствующих параметров. Возьмите эти примеры.
SA1309 жалуется:
class SomeClass
{
int _someField;
public SomeClass(int someField)
{
this._someField = someField;
}
}
CA1500 жалуется:
class SomeClass
{
int someField;
public SomeClass(int someField)
{
this.someField = someField;
}
}
Какие у меня есть варианты? Я не хочу делать частное поле поддержки PascalCase, потому что это (я считаю, довольно универсальное) соглашение для общедоступных полей/свойств. И я не хочу переименовывать один или другой, только ради разрешения двусмысленности.
Итак, я остался одним из двух вышеуказанных, что потребовало бы, чтобы я подавил одно из правил SA/CA.
Что вы, ребята, обычно делаете? И что еще более важно, что думают авторы этих правил (так как они не предоставляют альтернативных решений в их документации)?
ваш первый пример не будет компилироваться, имена перепутаны :) –
Я обычно нарушаю CA1500. Но у меня только Pro, без TFS, поэтому я никогда не вижу предупреждения. :) –
Я постоянно нарушаю CA1500, но до сих пор не получил предупреждения, хотя CA1500 включен. Есть ли что-то волшебное в этом правиле? – Albic