클린코드(Clean Code)를 읽고
책을 읽게된 동기
클린코드는 3년전부터 읽고 싶었던 책이었다. 한참 프로그래밍에 관심이 있었던 때라 이것저것 프로그래밍 실력을 올리기 위해 읽으면 좋은책을 인터넷에서 찾아다니며 보았던 기억이 있다. 이 책도 그 중하나다. 그 당시는 대학 도서관에서 빌려서 보았었는데 c++ 기초책 한권을 막 뗀 나에게는 좀 버거운 책이였다.
지금에서야 다시 이 책을 집어들었다. 물론 지금도 나에게 잘 안읽히는 책이였다. 나는 책에 쓰여진 기술을 쓸정도로 큰 프로젝트를 해본 경험이 없기 때문이다.
내용
1. 깨끗한 코드
- 코드는 요구사항을 표현하는 언어이다. 그러므로 요구가 있는한 코드도 항상 존재할것이다.
- 코드를 쓰는것은 그림을 그리는 것과 마찬가지이다.
나쁜 코드
- 나쁜 코드는 유지보수의 생산성을 극저하 시킨다.
- 잘못 설계된 코드는 한줄 고치면 끝날수도 있는걸 몇백줄을 고치게 한다.
- 나중에 고쳐야지하고 방치된 코드는 말썽을 일으킨다.
그렇다면 클린코드는 무엇일까?
사람마다 코드 스타일이 다르듯이 추구하는 클린코드도 다를것이다. 그 중 공통된걸 다뤄보겠다.
- 프로그래밍을 모르는 사람도 한눈에 읽히는 코드
- 다른 사람이 수정하기 쉬운 코드
- 에러 핸들링, 경쟁상태, 메모리 누수, 네이밍 등에 신경쓴 코드
- 한 가지 일에 집중하는 코드
- 중복이 적은 코드
- 모든 테스트를 통과하는 코드
- 클래스, 메서드, 함수 등을 최대한 줄인 코드
어떻게 클린코드를 유지하는가?
잘 짠 코드라 하더라도 유지보수를 거듭 할 수록 엉망으로 전락하기 쉽상이다. 이러한 퇴보를 막기 위해 보이스카우트 규칙을 적용하자.
캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라
변수의 이름, 긴 코드의 분할, 중복을 제거, 복합 if의 개선 정도 같은 기본적이라도 좋다. 일단 지속적인 개선을 하자.
2. 의미 있는 이름
의도를 분명히 밝혀라
- 변수의 존재 이유, 기능, 사용법 등이 변수&함수&클래스명에 드러나야 한다.(주석이 필요없게) ex)
- bad
int d; // elapsed time in days
- good
int elapsedTimeInDays;
- 모호한 변수명은 삼가한다.
- 비슷해 보이는 명명에 주의하자
좋은 클래스 이름 만들기
좋은 메소드 이름 만들기
- 명령형 동사 + 목적어 ex) get+Data()
- 위의 예제를 볼때 데이터를 가져와라!라고 명령문처럼 해석해야함
좋은 변수 이름 만들기
배운점
배웠다고 하면 배웠겠지만.. 실제로 내가 지금 당장 쓸수 있던 지식은 많이 없었던것 같다. 내가 주로 하는 코딩은 PS이다보니 간단한 변수이름과 전역변수 선언, 객체지향은 사용하지 않는 환경이다 보니 말이다. 요즘은 프레임워크가 올바른 코드로 짜일 수 있도록 인도를 해주고 설계가 되어있기 때문에 더더욱 그런것 같다.
그렇다고해서 쓸모 없는 지식은 아니다. 앞으로 배워 나갈 디자인 패턴이라던지 설계, 유지보수 등에서 왜 이렇게 코드가 쓰였는지에 대한 훌륭한 배경지식이 될것이라 생각된다.
… 독후감을 쓰랬더니 책내용을 정리하고 있어?!!
댓글남기기