Case Style에 대해 알아보자 (Camel Case? Pascal Case? Kebab Case?)

Case Style에 대해 알아보자 (Camel Case? Pascal Case? Kebab Case?)

April 14, 2022

오늘은 회사에서도 포스팅 했던 글 중 하나인데요.

코딩을 새롭게 시작하시는 분들께 가이드 해보고 싶은 것들이 있어 그런 부분들만 모아 앞으로 Code Guide라는 태그를 달아 포스팅 하려고 해요!

코딩 스타일

혼자서 개발을 한다면 아무런 문제가 없죠. 최근에는 거의 모든 언어가 UTF-8이라는 언어 인코딩을 지원하기 때문에 심지어 코드에 한글을 쓸 수도 있어요.

특히 변수명이나, 함수명, 클래스명과 같이 개발자가 자유롭게 지어도 되는 것들은 이론적으로는 중국어로 짓든, 한글로 짓든 아무런 문제가 되지 않아요.

그럼 왜 대부분의 코딩은 왜 영어로만 작성할까요?

조금 이야기가 다른 길로 새는 것 같지만! 가끔 가다 영어로만 작동하는 모듈이나 함수들이 있어요.

특히 C++과 같은 오래된 언어의 경우 한글을 지원하기 위해서는 한글을 영어나 OS가 이해할 수 있는 문자로 변환하는 파싱 모듈을 따로 필요로 하기도 해요

사실 그것보다 더 가장 중요한 것은 협업하는 개발자들 간의 개발자들의 코딩 스타일을 맞추기 위해서에요.

어떤 사람은 한글로 어떤 사람은 영어로, 어떤 사람은 중국어로 변수명을 정의하는데 서로 동일한 역할을 한다면, 만약 새롭게 팀원이 된 개발자가 그런 코드를 봤을 때 이해하기 굉장히 난해한 코드일거에요.

사실 그래서 개발자들 간에는 코드를 어떻게 짓고, 어떻게 해당 코드를 정의할 것인지에 대해 규칙이 정해진 것들이 있고, 이를 코딩 가이드 혹은 컨벤션 등과 같이 많은 이름으로 불리곤 해요

사설이 길었네요. 본론으로 넘어가 볼까요?

케이스 스타일

케이스 스타일은 일종의 작명 규칙이라고 생각하면 돼요.

변수나, 함수명, 클래스명을 지을 때 해당 규칙을 따라서 짓는 거죠. 특히 띄어쓰기와 매우 큰 관련이 있는데요.

많은 언어들이 띄어쓰기를 문법의 요소에 포함하고 있어, 그런 띄어쓰기를 대체할 문자를 어떻게 설정할 지에 대한 고민이 들어가 있다고 보시면 될 것 같아요.

▼ 케이스들의 스타일을 재미있게 표현한 사진 image

케이스들의 스타일은 정말 많지만 자주 사용되는 케이스 스타일은 크게 4가지 종류가 있어요

camelCase # 카멜 케이스
PascalCase # 파스칼 케이스
snake_case # 스네이크 케이스
kabab-case # 케밥케이스

다들 눈치채셨겠지만, 맞아요, 지금 적어놓은 코드가 케이스들의 대표적인 특징이에요.

카멜 케이스(Camel Case)

카멜 케이스의 경우 단봉 낙타의 형상에서 따온 케이스 입니다 띄어쓰기를 해야 할 때 띄어쓰기 대신 뒤에 오는 문자를 대문자로 적는 것이죠. Lower camel case, Upper camel case라고 구분하기도 하나, 일반적으로 Upper camel case의 경우 Pascal case라고 불러요

▼ 카멜 케이스 예

todayDate = "2022-04-14";

위의 방식처럼 today date라는 문자를 띄어쓰기 대신 todayDate라고 표기할 수 있어요

Google 사의 Java code style guide를 살펴보면 해당 방식은 Java와 Java기반으로 만들어진 언어인 Kotlin에서 메소드명, 변수명 등의 작명을 할 때 사용되는 것임을 알 수 있죠

(참조 링크: https://google.github.io/styleguide/javaguide.html#s5-naming)

파스칼 케이스(Pascal Case)

파스칼 케이스는 Upper camel case라고 불려요. 파스칼 언어들의 경우 첫 문자는 모두 대문자로 표기하였기 때문에 해당 이름에서 유래가 있습니다

▼ 파스칼 케이스 예

TodayDate = "2022-04-14"

해당 표기법은 Python의 클래스명, C에서 구조체나, C++의 클래스명을 짓는 네이밍 규칙, Java 클래스, 인터페이스 등의 네이밍 규칙에서 널리 이용되고 있어요.

추가적으로 파이썬의 코드 가이드인 PEP8에 대해서 살펴보면, 다음의 링크에서도 파이썬 클래스에서 해당 케이스를 사용함을 알 수 있죠.

해당 페이지에서는 파스칼 케이스를 카멜 케이스라 하고 있지만, 이는 앞서 설명했던 Upper camel case이니 혼동하지 않길 바랍니다. https://realpython.com/python-pep8/#naming-styles

스네이크 케이스 (Snake Case)

코드가 마치 뱀의 형상을 한 것 같다고 지어진 이 표기방식의 이름은 스네이크 케이스(Snake Case)에요.

변수나 함수명의 띄어쓰기를 언더바 _를 통해 구분하는 양식을 말합니다.

▼ 스네이크 케이스 예

today_date = "2022-04-14"

이는 파이썬의 네이밍 규약 PEP8에서 모듈명, 함수명, 메서드명, 변수명 등에서 사용하라고 권장하고 있는 표기 방식입니다.

(참조 링크: https://google.github.io/styleguide/javaguide.html#s5-naming)

또한 해당 방식에 어긋나게 변수명을 선언했을 경우, Python의 대표적인 IDE, PyCharm에서는 PEP8에 어긋나니 다시 변수명을 짓지 않을래? 하고 밑줄을 그어주는 것을 볼 수 있습니다.

▼ 어긋나게 지은 변수명 예

HelloMyMrYesterday = "2021-01-10"

▼ Pycharm에서의 경고

image

+ 틈새 꿀팁

PEP8에서는 네이밍뿐만 아니라 들여쓰기, 띄어쓰기 등에서도 명확한 규약이 있고, 대부분의 규약은 PyCharm IDE 내에서 자동 코드 정리 단축키(Ctrl + Alt + L) 을 통해 한번에 정리할 수 있습니다.

▼ 직관적으로 이해하기 쉽도록 아래의 코드처럼 일부러 코드 규약을 어겨보겠습니다.

def func_1():
    return 1
def func_2():
    return 2

파이참에서는 다음과 같이 노란색 경고 밑줄과 함께 코드를 고치라고 소개합니다. 친절하게 PEP8이라고 앞에 붙어 있군요!

image

image

  • 이후 Ctrl + Alt + L을 누르면,
def func_1():
    return 1
    
    
def func_2():
    return 2

다음과 같이 함수 별로 2번의 들여쓰기를 하여 경고문이 사라지는 것을 확인할 수 있습니다.

케밥 케이스 (Kebab Case)

카멜 케이스, 스네이크 케이스, 케밥 케이스를 보면 개발자들이 굉장히 직관적으로 코드를 바라봄을 알 수 있군요.

today-date = "2022-04-14"

보시는 것처럼 글자들이 마치 꼬치에 끼인 것처럼 띄어쓰기를 하이푼(-)으로 대체한 표기 방식을 케밥케이스 라고 해요.

보통 CSS와 같은 퍼블리싱 언어에서 자주 사용되며 이는 해당 관련한 자세한 내용은 네이밍 컨벤션(Naming Convention) BEM에서 확인하실 수 있습니다. https://en.bem.info/methodology/naming-convention/

마치며.

  • 오늘은 여러가지 코딩 스타일 규약과 컨벤션과 밀접한 관련이 있는 네이밍 규약, 케이스 스타일에 대해서 알아보았습니다!
  • 커밋 컨벤션과 같이 Git commit 시의 규약에 대해서도 다루어 보고 싶군요.
  • 궁금한 점이 있거나 틀린 점이 있다면 덧글을 남겨주세요!