참고 사항
해당 내용은 책 ('개발자의 글쓰기' - 김철수 저)에서 부분을 정리한 글입니다.
좋은 내용 감사드립니다.
프로그래밍을 하다보면 어느 순간 이런 생각이 들때가 있다.
내가 클래스와 변수를 "올바른 이름"으로 네이밍하고 있는가?
무언가 새로 배워보는 프레임워크나 기술스택으로 프로그래밍을 할 때 공부하는 차원에서 주석을 다는 것은 좋지만 주석이 또 늘어나는 것은 원치 않다.
모든 개발자는 자기 코드에 주석이 없어도 금방 이해할 수 있는 코드를 작성하고 싶어하기 때문이다.
현실은 이름을 잘못지어 내가 짠 코드임에도 불구하고 내가 이해하지 못하기 일쑤이다....
비슷한 이름을 클래스와 변수에도 사용하면 햇갈리기도 한다. 하지만 잘만 짜면 가독성이 좋아지고 다른 개발자와 소통하기도 쉬워진다.
어떻게 간결하고도 이해하기 쉬운 네이밍을 하는지 알아보자.
깃허브의 인기 자바 소스를 분석해서 클래스, 함수, 변수 이름의 명명특징을 연구한 글 "오픈소스의 네이밍 특징들"에 따르면 다음과 같으느 특징을 띤다.
-
- 명사 + 명사 + 명사
- 형용사 + 명사 + 명사
- 동사 + 명사 + 명사 등
즉, 특별한 것이 있는 것이 아니라, 기존 영어 규칙을 지키기
+ 기존 단어를 적절히 조합
인 것이다. 네이밍 컨벤션에 대해 자세히 알아보자.
파스칼 표기법은 모든 단어에서 첫 글자를 대문자로 쓰는 방식이다.
클래스는 프로그래밍에서 가장 주요하고 높은 위치(고유명사처럼 사용됨)에 있기 때문에 주로 클래스 이름에 사용한다.
interface ServiceMenu
class OrderMenu implements ServiceMenu
카멜 표기법은 첫 단어를 제외한 나머지 단어들의 첫 글자만 대문자로 쓴다.
주로 동작을 명령시키는 함수와 형용사로 시작하는 변수에 많이 사용한다.
public void beforeEach(){
// ...
}
//테스팅
void 회원가입(){
Long saveId = memberService.join(member);
}
영어 표기 원칙에서는 상수를 대문자로 쓰지 않지만 프로그래밍시에는 소문자를 쓰는 변수와 구별하기 대문자를 사용하고 언더스코어(_)로 단어를 연결한다.
static final int ORDER_MAX=10;
패키지와 모듈은 함수보다 높은 위치이지만 클래스를 모으거나 함수를 담아놓은 통에 불과하므로 실제로는 소문자만 쓴다.
실용적인 이유로는, 클래스 이름과 혼동할 수 있고, 모듈 이름과 함수 이름을 햇갈릴 수 있어서이다.
package hello.hellospring.service;
import hello.hellospring.repository.MemoryMemberRepository;
마치며...
개발자들끼리의 소통 중 가장 기본적인 요소중 하나인 네이밍컨벤션에 대한 자세한 원리와 설명을 집필해주신 지은이 김철수님께 감사드립니다.
스프링 프레임워크상에서도 당연하게도 고스란히 드러난 네이밍 컨벤션을 지나치지 않고 짚어가며 이해할 수 있었던 뜻깊은 포스팅이었습니다!