ReSharper-한 줄에 중괄호 사용


101

다음과 같이 중괄호가 한 줄 코드 블록을 둘러싸는 데 사용되지 않을 때 C # 코드를 수정하도록 ReSharper를 구성 할 수 있습니까?

if (blnSomeCondition)
   DoSomething();  // complain

if (blnSomeOtherCondition)
{
   DoSomethingElse(); // don't complain
}

감사


3
좋은 질문이지만 첫 번째 구문에 무엇이 문제입니까? 컬 브레이스는 필요하지 않습니다.
Micah

43
일부 개발자는 한 줄 코드 블록 주위에 중괄호를 포함하는 것이 더 읽기 쉽고 유지 관리가 용이 ​​할 수 있으므로 더 나은 방법이라고 주장합니다.
Ryan Berger

33
또한 컬링 괄호를 사용하지 않으면 버그가 발생하는 경우를 몇 번이나 보았습니다. 누군가 변경하고 if를보고 새 줄을 추가하지만 조건의 일부로 실행되지 않는다는 사실을 깨닫지 못합니다. 미묘하지만 발생했습니다.
Hadi Hariri

2
첫 번째 형식에는 실제로 문제가 없지만 Hadi가 언급 한 시나리오에서 버그로 이어질 수 있음을 알 수 있습니다. 우리 팀은 이것이 우리가 시행하고자하는 코딩 표준이라고 결정했고, 이것이 제가 질문하는 이유입니다.
Booberry

5
개인적으로 선호하는 것은 'if'한 줄에 중괄호를 사용하지 않고 'if'와 다음 문을 동일한 물리적 줄에 배치하는 것입니다. 예 : 'if (blnSomeCondition) Do Something ();'.
Paul Ruane

답변:


148

새 버전의 ReSharper (2016.x)에서 코드 스타일로 이동되었습니다. ReSharper 2016.1.1

UPD1 : ReSharper 2017.x 용 ReSharper 2017.1.2

UPD2 : ReSharper 2018.x 용 ReSharper 2018.1

UPD3 : ReSharper 2019.x 용 ReSharper 2019.1

UPD4 : ReSharper 2020.x 용 여기에 이미지 설명 입력


35

Ryan이 맞습니다 (그러나 그의 링크는 R # 2.0 도움말을 참조 함). 구체적인 절차는 다음과 같습니다.

  1. ReSharper> 옵션> 언어> C #> 서식 스타일> 중괄호 레이아웃으로 이동합니다.
  2. ""if-else "문의 중괄호"를 "여러 줄에 중괄호 사용"으로 설정합니다.
  3. 변경 사항을 저장 한 후 다시 형식화 할 범위를 선택합니다 (코드 선택, 파일, 폴더, 프로젝트, 솔루션 등 원하는 모든 것이 가능).
  4. ReSharper> 도구> 정리 코드를 선택합니다.
  5. 이익.

코드 정리는 다양한 작업을 수행하며 코드 형식화와 관련이있을뿐만 아니라 ( http://www.jetbrains.com/resharper/webhelp/Code_Cleanup__Index.html 참조 ) 기능을 현명하게 사용합니다.


28

Gorohoroh의 솔루션은 비슷하지만 "여러 줄에 중괄호 사용"을 선택하는 대신 "중괄호 추가"를 선택하여 한 줄 시나리오에서 중괄호를 추가해야했습니다. 그리고 모든 시나리오를 파악하기 위해 "Force Braces"아래의 6 개 드롭 다운 모두에서 설정해야했습니다.

대체 텍스트

제가 정말로 바랬던 것은 규칙 위반시 노란색 경고 또는 빨간색 오류를 수행하도록 ReSharper를 설정할 수있는 것이었지만 그렇게 할 방법을 찾지 못했습니다. 당신 말이 맞아요, Gorohoroh, Cleanup Code는 많은 일을합니다. 저는 한 번에 하나씩 규칙 위반을 확인하고 수정할 수있는 옵션을 갖고 싶습니다.

당신의 도움을 주셔서 감사합니다!


8

대한 ReSharper에서 2016년 2월 2일 .

정리를 위해 프로필을 편집해야합니다. 적절한 항목은 "if-else", "for", "foreach", "while", "do-while", "using"의 단일 문에 대한 중괄호 추가 / 제거라고 합니다. 이 항목은 C # => 코드 스타일 항목 에서 찾을 수 있습니다 .

항목을 선택하면 중괄호가 추가됩니다. 선택하지 않으면 중괄호가 제거됩니다.

참고 : 지금은 추가가 작동하지 않습니다 (이유를 모르겠습니다. ReSharper의 너무 최신 버전 일 수 있음). 그러나 언급 된 항목의 선택을 취소하면 단일 문 주위에 존재하는 중괄호가 제거되지 않습니다.

UPD : 문제가 해결되었습니다.이 게시물의 처음 두 댓글을 참조하세요.


2
이것은 2016.3.2에서 약간 다르게 작동합니다. 옵션에서 코드 편집-> C #-> 코드 스타일-> 중괄호-> "If"문 으로 이동 한 다음 기본 설정에서 "항상 적용"을 선택합니다. 다른 옵션으로는 "강제 안 함", "본문이 여러 줄이면 시행", "문이 여러
줄이면 시행

좋은. 감사합니다! 그리고 이러한 설정 후에는 내가 설명한 정리가 제대로 작동합니다.
Jordan


1

다른 사람이 시간을 절약하는 데 도움이된다면, 내 회사의 한 컴퓨터에서 세르게이의 조언을 따르는 것은 그의 게시물의 질이 우수 함에도 불구하고 충분하지 않았습니다.

관련 설정 (VS2017, R # 2019, 둘 다 최신 상태)에서 R # 측의 이러한 설정은 이미 좋았지 만 Visual Studio 옵션에서도 수정해야했습니다.

  • 옵션 창에서 텍스트 편집기-> C #-> 코드 스타일-> 서식-> 일반으로 이동합니다. .
  • " 형식화하는 동안 추가 코드 정리 수행 "및 " 단일 행 제어문에 대한 중괄호 추가 / 제거 "를 선택하십시오.

0

다시 움직입니다. 새 장소는 버전의 구문 스타일 아래에 있습니다.ReSharper 2020.01 있습니다.

이동 ReSharper > Options > Code Editing > C# > Syntax Style > Braces

다음은 스크린 샷입니다. ReSharper 2020.01

여기에 이미지 설명 입력

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.