좋은 코드란 제 3자가 봐도 쉽게 이해할 수 있는 코드이다.
컴퓨터가 이해할 수 있는 언어를 작성하는 건 바보도 할 수 있다.
코드는 사람이 이해할 수 있게 작성해야한다.
변수 명, 메소드 명, 클래스 명, 모듈 명 등
모든 명에는 규칙이 존재해야하며, 이 것이 바탕이 되어야 역할이 명확해지고 정체성 또한 분명해진다.
이 것이 OOP를 향한 첫 단추이다.
네이밍이 가장 어렵다면, 여러분만 그런 것이 아닙니다.
저도 그렇고, 다른 타 프로그래머들 또한 많이 동감하는 부분입니다.
그 만큼 네이밍은 프로그램에서 가장 중요한 역할 중의 일 부분이고 가장 기본이 되는 것 입니다.
**Unclear 한 코드는 쓰레기 코드이다. **
프로그래머로써 다른 프로그래머가 작성한 코드를 참고해서 작업해야 될 경우는 비일비재 할 것 이다.
목적을 이해할 수 없는 메소드 명과 변수들, 가독성이 떨어지는 코드는 업무의 효율을 저하시키며, 시간 또한 많이 소요하게한다.
예를 들어 “X, AO, C2” 이 와 같이 정확한 목적을 담지않은 변수들이 있다.
가급적으로 짧게 네이밍을 하려는 프로그래머의 욕심으로 발생하는 문제일 수 도 있으나, 이는 너무나 잘 못 된거이며
같은 동료에게 크나큰 해를 입히는 것 이라 생각한다.
좋은 네이밍이란 주석이 없이도 이해할 수 있을 정도의 직관적이어야한다.
가장 좋은 것은 사전적인 의미를 담고있는 단어를 사용하는 것이 가장 좋으며 타 개발자들이 알 수있는 표기법으로 가독성을
높이는 방법이 좋다.
표기 방법 중 대표적으로 3가지를 예로 들 수 있다.
- 헝가리안 표기법
- 변수 및 함수의 인자 이름 앞에 데이터 타입을 명시하여 표기
마이크로 소프트 개발자 구안한 표기법이다.
아래 접두사와 언더라인 (_)를 사용하여 표기한다.
접두어
데이터 타입
b
byte, boolean
n
int, short
i
int, short (인덱스로 사용)
c
int, short (크기로 사용)
l
long
f
float
d, db
double
ld
long double
w
word
dw
double word
qw
quad word
ch
char
sz
NULL 로 끝나는 문자열
str
C++ 문자열
arr
배열
p
포인터 (16비트, 32비트)
psz
NULL 로 끝나는 문자열을 가리키는 포인터 (16비트, 32비트)
lpsz
NULL로 끝나는 문자열을 가리키는 포인터 (64비트)
fn
함수 타입
pfn
함수 포인터 (16비트, 32비트)
lpfn
함수 포인터 (64 비트)
헝가리안 표기법은 더 이상 사용하지않는데, 그 이유는 IDE의 눈 부신 발전 덕분에 마우스 커서만 올리면 해당 변수의 데이터 타입이 표기 되기 때문이다. 그래서 구식 방법으로 지금은 인식되고있다.
- 파스칼 표기법
- 모든 단어 첫 번째 문자를 대 문자로 표기
- 카멜 표기법
- 단어와 단어가 이어서 변수명이 선언될 때, 두 번째 단어를 대 문자 표기
명명 규칙은 헝가리안 표기법의 MS 개발자 처럼 자신만의 룰을 만들어 작성할 수 있지만, 대중성이 있는 명명 규칙을 사용하는 것이 다른 프로그래머를 위해서도 좋다. 아래는 내가 지향하는 규칙이다.
- 클래스의 명은 UpperCamelCase
- 함수와 변수는 lowerCamelCase
- 그리고 상수는 대문자와 언더바 “_” 로 분리하여 표기한다. (e.g. YOUNG_KING)
참고