Skip to content

Coding Convention

Contents

Coding Convention

참고/출처 : https://en.wikipedia.org/wiki/Coding_conventions

코딩 컨벤션은 프로그래밍을 할 때 제시되는 가이드라인입니다. 코딩 컨벤션은 indentation, 주석처리, 선언문, 공백 문자, naming convention, 프로그래밍 원칙 등등 여러가지 가이드라인을 제시합니다.

코딩 컨벤션은 여러가지가 있는데, 어떤 것을 따르던지 한 프로젝트에서는 통일된 컨벤션을 준수해야 합니다. 왜냐하면 코딩 컨벤션은 코드의 스타일을 통일하는 것으로써 마치 옷을 입는 스타일을 통일하는 것과 같기 때문입니다. 코딩 컨벤션이 뒤죽박죽이면 옷을 이상하게 껴입고 나가는 것과 같죠.

여기에서는 C/C++ 코딩 컨벤션과 Python 코딩 컨벤션을 간단하게 알아보겠습니다.

C/C++ Indentation Style

코딩 컨벤션은 여러가지 가이드라인을 제시하는데 그 중 하나가 Indentation Style 입니다.

  • K&R, Allman

    while (x == y)
    {
        something();
        somethingelse();
    }
    
  • GNU

    while (x == y)
      {
        something ();
        somethingelse ();
      }
    
  • Whitesmiths

    while (x == y)
        {
        something();
        somethingelse();
        }
    

이렇게 각각의 Indentation Style 이 전혀 다름을 알 수 있습니다. 어떤 컨벤션을 따르든 상관없지만 한 프로젝트 내에서는 통일된 컨벤션을 유지해야 합니다.

C++ Coding Convention

여러 커뮤니티와 회사들이 자신들의 코딩 컨벤션을 정립해두었습니다. 대표적으로 Linux kernel, GNU C++ Style, Microsoft C++ Style Conventions, Google C++ Style Guide, LLVM coding standards, Chromium’s style guide, Mozilla’s style guide, WebKit’s style guide, Qt Coding Style, Unreal Engine Coding Standard, C++ Best Practices, Blender Coding Style, Blink Coding Style Guidelines, Inkscape Coding Style, CppCoreGuidelines 등등이 있습니다.

이 중에서 CppCoreGuidelines 이 가장 대표적인 C++ 코딩 컨벤션입니다. C++ 프로젝트를 진행한다면, 이러한 코딩 컨벤션 중 하나를 택하든가 아니면 프로젝트를 진행하는 사람들과 컨벤션에 합의를 보고 통일된 컨벤션으로 코딩을 하면 됩니다.

한글번역도 있으니까 영어가 아직 어려우신 분들은 다음 링크를 참조해주세요. 하지만 원본을 영어로 읽으시는 것을 추천합니다.

clang-format

하지만 매번 코딩 컨벤션을 신경쓰면서 코딩을 한다면 매우 피곤하겠죠. 이를 위하여 코딩 컨벤션을 자동으로 맞춰주는 툴이 있습니다. 그 툴 중 하나가 clang-format 입니다.

clang-formatC, C++, Objective-C 코드를 자동으로 포맷팅해주는 툴입니다. clang-formatLLVM, Google, Chromium, Mozilla, WebKitC++ 코딩 컨벤션에서 말하는 코드 포맷팅 기준을 자동으로 맞춰주기 때문에 일일히 코딩 컨벤션을 맞추느라 수고하지 않아도 되게 해줍니다.

또한 코드 스타일을 .clang-format 파일에 명시하면 코드 스타일을 커스터마이징 할 수도 있습니다. 그래서 프로젝트 팀원들과 컨벤션 합의를 본 다음 clang-format 설정에 그 컨벤션 설정을 해준다면, 넋놓고 코딩을 해도 clang-format 이 그 컨벤션으로 자동으로 코드를 lint 해줍니다.

Python Coding Convention

Python 코딩 컨벤션에는 대표적으로 PEP 8 이 있습니다. 일반적으로 PEP 8 을 많이 따라서 Python 코딩을 하니까 Python 에 더 관심있으신 분들은 꼭 PEP 8 를 공부해보세요.

또 Google 에서 제작한 Google Python Coding Conventoin 같은 것도 있으니까 여러가지 코딩 컨벤션을 비교해보고 가장 마음에 드는 컨벤션을 따르면 됩니다.

pylint

Python 에도 자동으로 코딩 컨벤션을 맞춰주는 툴이 있습니다. 그것이 pylint 인데 이 툴이 자동으로 PEP 8을 맞춰주기도 하고, VSCode 에도 연동하여 사용할 수도 있으니까 정말 편하죠.