"Stylecop C# Style"과 "Framework Design Guidelines C# Style"의 불일치를 어떻게 해결합니까?

StackOverflow https://stackoverflow.com/questions/426622

문제

Great Book "Framework Design Guidelines"의 "C# Coding Style Conventions"(2008 년 11 월의 2 판)의 부록 A를 살펴본 후 Microsoft가 내부 / 권장을 사용하는 코딩 스타일에 대해 매우 혼란스러워합니다.

블로그 항목 C# 스타일의 간단한 역사 주장 :

사실, "스타일 스타일"과 "프레임 워크 디자인 가이드 라인 스타일"의 차이점은 상대적으로 적습니다.

내가 알 수 있듯이 차이점은 상당히 두드러집니다. Stylecop은 브레이스 오프닝 브레이스는 별도의 라인에 있어야한다고 프레임 워크 설계 지침에 따르면 개막식 후에야한다고 말합니다. Stylecop은 모든 키워드가 공간을 따라야한다고 Framework Design 지침은 '모든 공간을 제거'(이진 연산자 주변)이라고 말합니다.

Framework Design Guidelines 책 에서이 규칙을 찾았습니다. 특히 아이러니 한 (366 페이지, 6 번째 규칙) :

하지 마라 흐름 제어 문 앞에 공간을 사용하십시오

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

이것은 스타일 콥 스타일이라는 명시 적으로 진술합니다 잘못된 (while 키워드 후 공간, 평등 바이너리 연산자 전후의 공간).

결국 StyleCop 스타일을 사용하여 형식화 된 코드는 프레임 워크 설계 가이드 라인 스타일을 사용하여 형식과는 상당히 다른 "느낌"을 가지고 있습니다. 프레임 워크 설계 가이드 라인 스타일을 따르면 많은 규칙을 비활성화해야합니다 (프레임 워크 설계 지침 스타일을 준수하는 규칙은 없습니다 ...).

누군가 (MSFT 내부자) 가이 발산에 대해 약간의 빛을 비출 수 있습니까?

당신의 팀은 이것을 어떻게 다루고 있습니까? Stylecop에 이어? 프레임 워크 설계 지침? 스타일을 모두 무시하고 있습니까? 나만의 스타일을 굽습니까?

도움이 되었습니까?

해결책

블로그에서 나는 이것에 대해 읽었습니다 (URL을 찾을 수없는 것 같습니다). 프레임 워크 지침은 C ++ 가이드 라인 (모두 노련한 C ++ 개발자)을 기반으로하고 진화하는 반면 Stylecop이 제공하는 가이드 라인은 더 현대적인 새로운 C#입니다. 유일한지도 ... 둘 다 괜찮아, 직접 결정을 내립니다 ... 나는 개인적으로 스타일을 사용합니다.

다른 팁

Stylecop 팀 의이 기사는 당신이 생각하는 것을 정확히 설명합니다.http://blogs.msdn.com/sourceanalysis/archive/2008/05/25/a-difference-of-style.aspx

그리고 귀하의 질문의 두 번째 부분에 답하기 위해, 우리 팀은 모든 규칙을 사용하여 Stylecop을 사용하기 시작했습니다 (일부 사람들은 사용할 규칙을 선택하고 선택할 수 있습니다). 내가 싫어하는 유일한 것은 여분의 시간이지만 StyleCopforResharper와 같은 도구를 사용하면 훨씬 더 빨리 진행됩니다. 사람들이 내가 쓴 것과 다르게 보이는 코드를 썼을 때 정말 화가 났지만 이제는 스타일을 사용 했으므로 모든 사람의 코드가 동일하게 보입니다. 사람들이하는 성가신 일에 대해 더 이상 당신의 입술을 물지 마십시오

우리는 모든 코드에 StyleCop을 사용하며, 몇 가지 사소한 놈들 외에도 대부분의 표준은 가장 읽기 쉬운 코드로 이어집니다. 많은 표준이 Microsoft 내에서 크게 논의되었으며 커뮤니티로부터 피드백을 받았으며, 모든 사람이 모든 것에 동의 할 것으로 예상되지는 않지만 아마도 최고의 '표준'에 관한 것일 것입니다 (특히 자동으로 허용하기 때문에 Resharper 플러그인을위한 스타일을 사용한 검증 및 자동 보정).

당신이 강력하게 동의하지 않는 것이 있다면, 도구를 유지하는 Jason Allor는 예를 들어 Auto-Properties Stylecop이 원래 주장한 것과 같은 특정 사항에 대한 제안에 상당히 개방적입니다 ...

public int Prop
{
    get;
    set;
}

... 그러나 우리는 단일 라인 속성을 허용하기위한 변경 요청을 제기했습니다 (즉, 한 줄의 모든 것을 한 줄에) 할 수 없었습니다. 그는 며칠 안에이 변화를했다.

당신은 결정을 내립니다. 하나의 일부와 다른 부분의 일부를 좋아한다면 자신만의 스타일 가이드를 작성하십시오. 다른 하나보다 더 좋아한다면 선택하십시오.

해야 할 중요한 일은 스타일을 선택하는 것입니다. 엄격한 정량적 방식으로 서로를 평가할 방법은 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top