코드프레소 백엔드 개발자 양성 과정
자바 명명 관례
코드프레소 과정에서 자바 언어 기반의 스프링 프레임워크를 이용해 소셜 미디어 플랫폼 개발 프로젝트를 맡으며 발생한 일이다. 기능 시연 및 코드 리뷰를 하던 중 받은 지적 가운데 하나는 변수나 클래스의 이름만 봐선 어떤 역할을 하는 객체인지 명확하지 않다는 점이었다.
이런 문제를 극복하기 위해 존재하는 관례, 특히 자바 언어에서 통용되는 명명 관례에 대해 알아보겠다.
명명 관례란?
명명 관례란 특정 프로그래밍 언어로 코드를 작성할 때 가독성을 향상하기 위해 권고되는, 객체의 이름을 짓는 방식이다. 객체 작명은 비록 겉보기에는 별 일이 아닌 것 같아 보이지만, 협업이 유난히 중요한 개발 업무에서, 중도 투입된 동료가 코드를 보고 곧바로 유지 보수 작업을 이행할 수 있도록 하는 데에 중요한 요소 중 하나이다.
자바 고유의 작명 관습을 알아보기 전에 짚고 넘어가야 할 것이 프로그래밍 언어의 다양한 표기 관습이다. 관습인 만큼 지키지 않았다고 해서 컴파일 시 오류가 나지는 않지만, 개발은 혼자 하는 일이 아닌 만큼 다음과 같은 표기법을 숙지해 두어야 한다.
- 낙타 표기법 (
camelCase
) : 형태가 마치 낙타등의 혹처럼 생겼다고 해서 이렇게 불리는 낙타 표기법은 첫 번째 단어의 첫 글자는 소문자, 그 다음 단어부터는 매 첫 글자를 모두 대문자로 표기한다. 띄어쓰기는 하지 않는다. - 뱀 표기법 (
snake_case
) : 형태가 뱀처럼 생겨 붙은 이름으로, 모든 글자는 소문자로 표기하고 단어는 띄어쓰기 대신 밑줄로 연결한다. - 케밥 표기법 (
kebab-case
) : 중동식 꼬치 요리 모양을 한 표기법으로, 모든 글자는 소문자로 표기하고 단어는 띄어쓰기 대신 붙임표로 연결한다. - 파스칼 표기법 (
PascalCase
) : 낙타 표기법과 같은 원리이나, 첫 단어의 첫 글자를 대문자료 표기한다.
자바의 명명 관례
자바로 개발을 할 때는 위의 표기법 중 주로 낙타 표기법을 사용한다. 하지만 명명 관례에는 표기법만 있는 것이 아니다. 이름의 내용 또한 매우 중요하며, 객체의 종류 및 속성 또한 고려해야 한다. 객체와 그 객체의 역할에 따라 자바 명명 관례에는 다른 표기법과 품사가 적용된다.
- 패키지 : 모든 글자는 소문자여야 하며, 아스키 문자(¨, ˇ, ´ 따위의 발음 구별 기호가 없는 표준 영어 자모와 지정된 특수 문자)만을 사용할 수 있다. 다음 예시와 같이 최상단 도메인 주소로 시작하며, 조직 내부의 명명 관례를 따른다.
com.codepresso.socialmediaproject.v2.
- 클래스와 인터페이스 : 파스칼 표기법을 따르는 명사로 이름을 지어준다. 되도록이면 약어를 사용하지 않는다.
interface EspressoMachine
class CodepressoSocialMedia implements EspressoMachine
- 메서드 : 낙타 표기법을 따르는 동사로 이름을 지어준다. 데이터를 가공하는 객체이므로 동사가 적합함을 알 수 있다. 이런 이유로 객체의 종류 및 속성을 반영해 작명하는 것이다.
void roastCoffee(int roastedBean);
void brewCoffee(int coldBrew);
- 변수 : 낙타 표기법을 따라 간결하게 짓되, 임시 변수명을 지을 때 외에는한 글자 이름은 피하는 것이 좋다. 임시 변수가 정수형일 경우 i, j, k, m, n을 사용하며, 문자형일 경우 주로 c, d, e를 사용한다.
// CodepressoSocialMedia 클래스의 변수
int taste = 100;
int bitterness = 50;
- 상수 : 모든 글자를 대문자로 표기하며, 단어는 밑줄로 구분한다.
public static final float POSITIVE_INFINITY = 1.0f / 0.0f;
public static final float NEGATIVE_INFINITY = -1.0f / 0.0f;
앞서 말했듯 이런 관습을 지키지 않는다고 해서 오류가 발생하지는 않는다. 하지만 이런 명명 관례를 따른다면 다른 개발자들과 더 효과적으로 협업할 수 있을 것이다.