C# 코드의 형식을 지정하는 올바른 방법이 하나만 있는 것은 아니지만, 팀 전체에서 일관된 스타일에 동의하면 더 깔끔하고 가독성이 높으며 확장 가능한 코드베이스를 만들 수 있습니다. 이 페이지에서는 나만의 스타일 가이드를 만들 때 수업, 방법 및 코멘트에 대해 염두에 두어야 할 팁과 주요 고려 사항을 제공합니다.
참고: 여기에 공유된 권장 사항은 Microsoft에서 제공한 권장 사항을 기반으로 합니다. 가장 좋은 코드 스타일 가이드 규칙은 팀의 필요에 맞는 규칙입니다.
여기에서 코드 스타일 가이드 예제를 확인하거나 전체 전자책( C# 스타일 가이드 만들기)을 다운로드할 수 있습니다: 확장하는 더 깔끔한 코드 작성.
이름 지정과 함께 서식 지정은 추측을 줄이고 코드의 명확성을 높이는 데 도움이 됩니다. 표준화된 스타일 가이드를 따르면 코드 검토는 코드의 모양보다는 코드가 수행하는 기능에 집중하게 됩니다.
팀에서 코드 서식을 지정하는 방식을 개인화하는 것을 목표로 하세요. Unity 스타일 가이드를 설정할 때 다음 코드 서식 제안 사항을 고려하세요. 팀의 필요에 따라 이러한 샘플 규칙을 생략하거나 확장 또는 수정할 수 있습니다.
어떤 경우든 팀에서 각 서식 지정 규칙을 어떻게 구현할지 생각해 보고 모든 사람이 균일하게 적용하도록 하세요. 불일치하는 부분이 있으면 팀의 스타일 가이드를 다시 참조하여 해결하세요. 서식에 대해 덜 생각할수록 더 생산적이고 창의적으로 일할 수 있습니다.
몇 가지 서식 지정 가이드라인을 살펴보겠습니다.
프로퍼티는 클래스 값을 읽고, 쓰고, 계산할 수 있는 유연한 메커니즘을 제공합니다. 프로퍼티는 마치 공용 멤버 변수인 것처럼 동작하지만 실제로는 특수 메서드인 접근자.
각 프로퍼티에는 개인 필드에 액세스하는 가져오기 및 설정 메서드가 있습니다. 백킹 필드. 이렇게 하면 프로퍼티가 데이터를 캡슐화하여 사용자나 외부 객체에 의한 원치 않는 변경으로부터 데이터를 숨깁니다. '게터'와 '세터'에는 각각 고유한 액세스 수정자가 있어 속성을 읽기-쓰기, 읽기 전용 또는 쓰기 전용으로 설정할 수 있습니다.
또한 액세스자를 사용하여 데이터를 검증하거나 변환할 수도 있습니다(예: 데이터가 원하는 형식에 맞는지 확인하거나 특정 단위로 값을 변경하는 경우).
속성의 구문은 다양할 수 있으므로 스타일 가이드에서 속성 서식 지정 방법을 정의해야 합니다. 코드에서 프로퍼티를 일관되게 유지하는 방법에 대한 팁은 다음 예시를 참조하세요.
한 줄 읽기 전용 속성 (=>)에는 표현식으로 구성된 속성을 사용합니다: 그러면 비공개 지원 필드가 반환됩니다.
그 밖의 모든 것은 표현식으로 구성된 { get; set; } 구문을 사용합니다: 백킹 필드를 지정하지 않고 공개 속성만 노출하려는 경우에는 자동 구현 프로퍼티.
집합에 표현식 기반 구문을 적용하고 접근자를 가져옵니다. 쓰기 권한을 제공하지 않으려면 '설정자'를 비공개로 설정하는 것을 잊지 마세요. 닫는 부분을 여러 줄 코드 블록의 여는 버팀목에 맞춥니다.
스크립트 직렬화는 데이터 구조 또는 오브젝트 상태를 Unity가 나중에 저장하고 재구성할 수 있는 형식으로 변환하는 자동 프로세스입니다. 성능상의 이유로 Unity는 다른 프로그래밍 환경과 다르게 직렬화를 처리합니다.
직렬화된 필드는 인스펙터에 표시되지만 정적, 상수 또는 읽기 전용 필드는 직렬화할 수 없습니다. 공개이거나 [SerializeField] 속성으로 태그가 지정되어 있어야 합니다. Unity는 특정 필드 유형만 직렬화하므로 전체 직렬화 규칙은 설명서를 참조하세요.
직렬화된 필드로 작업할 때는 다음 기본 지침을 준수하세요:
SerializeField] 속성을 사용합니다: SerializeField 속성은 비공개 또는 보호된 변수와 함께 작동하여 인스펙터에 해당 변수를 표시할 수 있습니다. 이렇게 하면 변수를 공개로 표시하는 것보다 데이터를 더 잘 캡슐화하고 외부 객체가 해당 값을 덮어쓰는 것을 방지할 수 있습니다.
범위 속성을 사용하여 최소값과 최대값을 설정합니다: 범위(최소, 최대)] 속성은 사용자가 숫자 필드에 할당할 수 있는 항목을 제한하려는 경우에 유용합니다. 또한 인스펙터에서 슬라이더로 필드를 편리하게 표시할 수 있습니다.
직렬화 가능한 클래스 또는 구조체에서 데이터를 그룹화하여 인스펙터를 정리합니다: 공용 클래스 또는 구조체를 정의하고 [Serializable] 속성으로 표시합니다. 인스펙터에서 노출하려는 각 유형에 대한 공개 변수를 정의합니다.
다른 클래스에서 이 직렬화 가능한 클래스를 참조합니다. 결과 변수는 인스펙터의 접을 수 있는 단위 안에 나타납니다.
C#에는 두 가지 일반적인 들여쓰기 스타일이 있습니다:
올만 스타일은 (BSD 유닉스에서 유래한) BSD 스타일이라고도 하며, 여는 중괄호를 새 줄에 배치합니다.
K&R 스타일 또는 "원 트루 브레이스 스타일"은 이전 헤더와 동일한 라인에 오프닝 브레이스를 유지합니다.
이러한 들여쓰기 스타일에도 다양한 변형이 있습니다. 이 가이드의 예제에서는 Microsoft 프레임워크 디자인 가이드라인의 Allman 스타일을 사용합니다. 팀으로 어떤 것을 선택하든 모든 사람이 동일한 들여쓰기 및 중괄호 스타일을 따르도록 하세요. 다음 섹션의 팁을 사용해 볼 수도 있습니다.
들여쓰기는 일반적으로 2~4칸입니다. 탭 대 스페이스의 불꽃 전쟁을 일으키지 않고도 팀원 모두가 에디터 환경설정에서 설정에 동의하도록 하세요.
Windows용 Visual Studio에서 도구 > 옵션 > 텍스트 편집기 > C# > 탭으로 이동합니다.
Mac용 Visual Studio에서 환경설정 > 소스 코드 > C# 소스 코드로 이동합니다. 텍스트 스타일을 선택하여 설정을 조정합니다.
참고: Visual Studio에서는 탭을 공백으로 변환하는 옵션을 제공합니다.
한 줄짜리 문장이라도 중괄호를 생략하지 마세요. 중괄호는 일관성을 높여 코드를 더 쉽게 읽고 유지 관리할 수 있게 해줍니다. 이 예제에서는 중괄호를 사용하여 DoSomething이라는 액션을 루프에서 명확하게 구분합니다.
나중에 디버그 줄을 추가하거나 DoSomethingElse를 실행해야 하는 경우 중괄호는 이미 제자리에 있습니다. 절을 별도의 줄에 유지하면 중단점을 간단히 추가할 수 있습니다.
중첩된 여러 줄 문에서 중괄호를 제거하지 마세요. 이 경우 중괄호를 제거해도 오류가 발생하지는 않지만 혼란을 야기할 수 있습니다. 선택 사항이라도 명확성을 위해 중괄호를 적용하세요.
서식은 다양할 수 있으므로 스타일 가이드에 팀 선호 사항을 문서화하고 그에 따라 전환 문장을 표준화하세요.
다음은 대소문자 들여쓰기의 한 예입니다.
띄어쓰기처럼 간단한 것만으로도 화면에서 코드의 모양을 개선할 수 있습니다. 개인마다 선호하는 서식은 다를 수 있지만, 가독성을 높이기 위해 아래 제안 사항을 고려하세요.
공백을 추가하여 코드 밀도를 줄입니다. 여분의 공백은 줄의 각 부분을 시각적으로 구분하는 느낌을 줍니다.
함수 인수 사이에는 쉼표 뒤에 공백을 하나만 사용합니다.
괄호 및 함수 인수 뒤에 공백을 추가하지 마세요.
함수 이름과 괄호 사이에 공백을 사용하지 마세요.
가급적 괄호 안에 공백을 넣지 마세요.
흐름 제어 조건 앞에 공백을 하나 사용하고 흐름 비교 연산자와 괄호 사이에 공백을 추가합니다.
비교 연산자 앞뒤에 하나의 공백을 사용합니다.
줄을 짧게 유지하고 가로 공백을 고려하세요. 표준 줄 너비(80~120자)를 정하고 긴 줄은 넘치지 않게 작은 문장으로 나누세요.
앞서 설명한 것처럼 들여쓰기/계층을 유지하세요. 코드에 들여쓰기를 하면 가독성을 높일 수 있습니다.
가독성을 위해 필요한 경우가 아니라면 열 정렬을 사용하지 마세요. 이러한 유형의 띄어쓰기는 변수를 정렬하지만, 유형과 이름의 페어링을 복잡하게 만들 수 있습니다.
그러나 열 정렬은 비트 단위 표현식이나 데이터가 많은 구조에 유용할 수 있습니다. 다만 항목을 추가할수록 열 정렬을 유지하기 위해 더 많은 작업이 발생할 수 있다는 점에 유의하세요. 일부 자동 서식 지정기는 열의 어느 부분이 정렬되는지 변경할 수도 있습니다.
세로 간격도 유리하게 사용할 수 있습니다. 스크립트의 관련 부분을 함께 유지하고 빈 줄을 유리하게 활용하세요. 코드를 위에서 아래로 정리하려면 다음과 같이 하세요:
- 종속적이거나 유사한 방법을 함께 그룹화합니다: 코드는 논리적이고 일관성이 있어야 합니다. 동일한 작업을 수행하는 메서드를 나란히 배치하면 로직을 읽는 사람이 파일을 이리저리 옮겨 다닐 필요가 없습니다.
- 세로 공백을 사용하여 수업의 뚜렷한 부분을 구분하세요: 예를 들어 두 줄 사이에 빈 줄을 추가할 수 있습니다:
- 변수 선언 및 메서드
- 클래스 및 인터페이스
- if-then-else 블록(가독성에 도움이 되는 경우)
가능하면 스타일 가이드에서 이를 최소한으로 유지하고 추적하세요.
코드에서 지역 사용
region 지시문을 사용하면 C# 파일에서 코드 섹션을 축소하고 숨길 수 있으므로 대용량 파일을 더 관리하기 쉽고 읽기 쉽게 만들 수 있습니다.
그러나 이 가이드의 일반적인 수업에 대한 조언을 따른다면 수업 규모를 관리할 수 있고 #지역 지시문은 불필요할 것입니다. 코드 블록을 영역 뒤에 숨기는 대신 코드를 더 작은 클래스로 나누세요. 소스 파일이 짧으면 영역을 추가하는 경향이 줄어듭니다.
참고: 많은 개발자가 영역을 코드 냄새 또는 안티 패턴으로 간주합니다. 팀원들과 함께 토론의 어느 편에 속할지 결정하세요.
이러한 서식 규칙이 부담스러워 보인다고 해서 절망하지 마세요. 최신 IDE를 사용하면 효율적으로 설정하고 시행할 수 있습니다. 서식 지정 규칙의 템플릿을 만든 다음 프로젝트 파일을 한 번에 변환할 수 있습니다.
스크립트 에디터의 서식 지정 규칙을 설정하려면 다음과 같이 하세요:
- Windows용 Visual Studio에서 도구 > 옵션으로 이동한 다음 텍스트 편집기 > C# > 코드 스타일 서식을 찾습니다.
- 설정을 사용하여 일반, 들여쓰기, 새 줄, 간격 및 줄 바꿈 옵션을 수정할 수 있습니다.
- Mac용 Visual Studio에서 Visual Studio > 환경설정을 선택한 다음 소스 코드 > 코드 서식 지정 > C# 소스 코드로 이동합니다.
- 상단에서 정책을 선택한 다음 텍스트 스타일 탭으로 이동합니다. C# 형식 탭에서 들여쓰기 , 새 줄, 간격 및 줄 바꿈 설정을 조정합니다.
스크립트 파일이 스타일 가이드를 따르도록 하려면 다음과 같이 하세요:
- Windows용 Visual Studio에서편집 > 고급 > 문서 서식 지정(Ctrl + K, Ctrl + D 단축키 코드)으로 이동합니다. 공백과 탭 정렬만 서식을 지정하려면 편집기 하단의 코드 정리 실행(Ctrl + K , Ctrl + E )을 사용할 수도 있습니다.
- Mac용 Visual Studio에서 편집 > 문서 서식 지정(Ctrl + I 단축키)으로 이동합니다.
Windows의 경우 도구 > 설정 가져오기 및 내보내기에서 편집기 설정을 공유할 수도 있습니다. 스타일 가이드의 C# 코드 형식을 사용하여 파일을 내보낸 다음 모든 팀원이 해당 파일을 가져오도록 합니다.
Visual Studio는 스타일 가이드를 준수하는 데 도움이 됩니다. 서식을 지정하면 단축키를 사용하는 것만큼이나 간단해집니다.
참고: 편집기를 구성할 수 있습니다.EditorConfig 파일(위 참조)을 구성할 수 있습니다(Visual Studio 설정을 가져오고 내보내는 대신). 이렇게 하면 여러 IDE에서 서식을 쉽게 공유할 수 있습니다. 또한 버전 관리 기능으로 작업할 수 있는 추가적인 이점도 있습니다. 자세한 내용은 .NET 코드 스타일 규칙 옵션을 참조하세요.
깔끔한 코드에만 해당되는 것은 아니지만, Visual Studio를 사용하여 Unity에서 프로그래밍 워크플로 속도를 높일 수 있는 10가지 방법을 확인해 보세요. 이러한 생산성 팁을 적용하면 코드를 깔끔하게 포맷하고 리팩터링하는 것이 더 편리하다는 점을 기억하세요.
코드 스타일 팁 더 보기
여기에서 명명 규칙에 대해 자세히 알아보거나 전체 전자책을 확인하세요. 자세한 코드 스타일 가이드 예시를 살펴볼 수도 있습니다.