컴퓨터가 이해 할 수 있는 코드는 아무라도 짤 수 있다.
개발자란, 사람이 이해 할 수 있는 코드를 짜야한다.
체계적으로 잘 짜여진 코드란, 별 다른 주석이 없어도 그 자체로 하나의 레퍼런스라 할 수 있다.
코딩에 관한 좋은 격언들이다.
그렇다면, 그 첫걸음은 어디서부터 시작해야 할까?
가장 단순한 코드 컨벤션에서부터 시작해야 한다.
언뜻보기에는, 단순해보일 수 있는, 들여쓰기시 탭간격, 변수네이밍규칙등등..
왜일까?
Sun의 코딩컨벤션에서는 그 필요성을 다음과 같이 말하고 있다.
왜 code convention이 필요한가?
Code convention은 여러 가지 이유에서 프로그래머에게 중요하다 :
- 소프트웨어 lifetime의 80%가 유지보수에 소요된다.
- 본래의 개발자에 의해서 소프트웨어 개발 전체가 유지되는 소프트웨어는 거의 존재하지 않는다.
- Code convention은 소프트웨어의 개발자들이 새로운 코드를 더 빠르고 완벽하게 이해할 수 있게 하여서, 소프트웨어의 가독성을 향상시킨다.
- 개발자가 자신의 소스 코드를 제품으로 팔려고 한다면, 개발자가 만든 어떤 다른 소스 코드들과 어울리고 잘 패키지 할 필요성이 있다.
XP신봉자들은 다소 노골적으로, 주석보다는 체계적이고 명료한 코드를 선호하는 것 같다.
그런데 정말 맞는 것같다. 어쩔땐, 내 자신이 정성들여 써놓은 주석마저도 암호문같이 느껴지고,
난데없이 튀어나오는 변수나 메소드이름들에선 그 어떤것도 유추해놓을 수 없으니까.
가장 간단한 실천방안 몇개를 제시해보고자 한다.
* 들여쓰기(Indentation)은 4 혹은 8칸으로.
체험상, 4칸이 가장 적절했는데, 개인적인 취향이니 뭐... 개인적으로는 아무리 시대가 좋아져도
여전히 80컬럼을 지키는것이 가독성에 좋은것 같다.
* 네이밍은 영문법에 가급적 맞게
영어에 친숙하지 않아도 상관없다. 콩글리시와 한글은 절대금물이며(콩글리시로 해야 더 잘 통한다는 의견도 있지만, 언제까지나 내부집단의 사례일뿐. 뜻이 통하는게 더 비참한 거다;)
가급적 행위나 성격에 맞는 단어를 쓰자.
(외국 소스 몇번만 쭈욱 훑어봐도, 어느때 어떻게 명명하는지 뻔히 보인다)
언더바(_)같은 거 쓰는사람도 때려주자! -_-/
*네이밍은 다소 길어도 명확하게
의미전달이 되어야 한다. MappingSqlQueryWithParameters 요정돈 양반이다.
길긴 해서, 타이핑시에 귀찮긴 하지만, 이미 대강 무슨 행위를 하는 클래스인지
알 수 있게되었다. MappingSql이라고 해도 대충 때려잡을순 있겠지만, 가능한한 명확하게!
(요샌 IDE가 왠만한거 다 챙겨주는데, 타이핑핑계대는 사람은 거짓말쟁이~!-_-)
매소드는 가급적 행위를 나타내는 동사로 시작하자.
그리고, 이거저거 할것 없이, 축약어를 쓰는데, 이것도 좀 지양하자.
Mgr, Err. 이정도는 양호하지만, 가급적이면 다 써도 별로 시간 안걸린다.
*헝가리안 표기법은 이제 그만!
C++은 잠깐밖에 공부한적이 없지만, 그넘의 표기법이라는게 꽤 골치아팠던 기억이 있다.
왜 꼭 타입까지 고려해서 네이밍해야하나? 그러다가, 메소드의 성격이 바뀌면?
말로는 OOAD를 외치면서, 호박씨까는 행위가 아닐수 없다.
좀 미워보여도 자바같이 행위나 성격만 묘사한, 카멜스타일(이걸 낙타등같이 생겼다고 이렇게 부르더다만, 정식명칭은 모르겠다-_-)을 쓰자. getRequiredFields() 깔끔하잖아!
* 쪼잔한 부분들,
콤마는 앞에는 공백없게, 뒤에는 한칸을 띄자. ex> a, b
하나의 소스에는 하나의 클래스만.
주석을 쓰려면, 귀찮아도 javadoc스타일 주석으로(나중에 javadoc만든다고 부산떨필요없다
이클립스는 /** */만 해도 자동으로 대충 만들어준다!)
try catch문은 항상 요렇게
try {
.....
} catch (IncredibleException e) {
.....
} finally {
.....
}
의외로 예외처리하는 부분은, 프로그래머마다 다양한 표기법을 쓰길래-_-;
Sun에서 공식으로 배포하는 Code Convention문서도 있고,
찾아보면, 수많은 고수들이 잘 정리해놓은 문서가 다양하다.(번역본도)
'Java' 카테고리의 다른 글
[펌] Java 초기 CLSSPATH 세팅 (SDK 설치) (0) | 2006.05.16 |
---|---|
[Java performance tips - 4] IO관련 - End (0) | 2006.05.16 |
[Java performance tips - 3] Collection관련 (0) | 2006.05.16 |
[Java performance tips - 2] String 관련 (0) | 2006.05.16 |
[Java performance tips - 1] 일반적사항 관련 (0) | 2006.05.16 |