깨끗한 코드
1. 5S 원칙
1) 정리(Seiri) 또는 조직 (정렬 : sort)
- 명명법 등을 통해 무엇이 어디에 있는지 알아야 한다.
2) 정돈 (Seiton)
- 코드는 누구나 예상하는 위치에 있어야 한다.
3) 청소 (Seiso)
- 주석으로 처리한 코드, 불필요한 기록은 지워야 한다.
4) 청결 또는 표준화 (Seiketsu)
- 작업 공간을 청소하는 방식에 그룹이 동의한다.
5) 생활화 또는 규율 (Seikatsuka)
- 관례를 따르고, 자기 작품을 자주 돌아보고, 기꺼이 변경하는 규율
2. 깨끗한 코드를 작성하는 것
- 깨끗한 코드를 작성하는 방법은 배우기 어렵고 고생해야 한다.
- 단순히 원칙과 패턴을 안다고 해서 깨끗한 코드가 되는 것은 아니다.
- 연습과 실패, 잘못된 결정으로 인한 대가를 경험해야 한다.
3. 나쁜 코드
- 르블랑의 법칙(Leblanc's Law)
- 나쁜 코드가 쌓일수록 팀 생산성을 떨어지고 업무가 늘어난다. 이는 프로그래머의 탓이다.
- 좋은 코드를 사수하는 일은 프로그래머의 책임이다.
- 우리는 나쁜 코드가 업무속도를 늦춘다는 것을 알지만 기간을 맞추기 위해 나쁜 코드를 양산한다.
- 나쁜 코드로 인해 오히려 기간을 맞추지 못하게 되기 때문에 기한을 맞추는 유일한 방법은 깨끗한 코드를 유지하는 습관이다.
4. 깨끗한 코드라는 예술
- 깨끗한 코드를 작성하는 것은 예술과 같다.
- 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 해서 깨끗한 코드를 작성할 줄 아는 것이 아니라, 코드 감각을 이용한 절제와 규율이 필요하다.
5. 깨끗한 코드란?
비야네 스트롭스트룹(Djarne Stroustruo, C++ 창시자)
- 나는 우아하고 효율적인 코드를 좋아한다.
- 의존성의 논리가 간단해야 버그가 숨어들지 못한다.
- 의존성을 최대한 줄여야 유지보수가 쉬워진다.
- 오류는 명백한 전략에 의거해 철저히 처리한다.
- 성능을 최적으로 유지해야 사람들이 원칙 없는 최적화로 코드를 망치려는 유혹에 빠지지 않는다.
- 꺠끗한 코드는 '보기에 즐거운' 코드이다.
- 효율도 단순히 속도를 의미하는 것이 아니다.
- 나쁜 코드는 나쁜 코드를 유혹한다.
- 프로그래머들이 대충 넘어가는 것이 오류 처리의 세세한 사항까지 꼼꼼하게 신경 써야 한다.
- 나쁜 코드는 너무 많은 일을 하려 얘쓰다가 의도가 뒤섞이고 목적이 흐려진다.
- 깨끗한 코드는 한가지에 집중한다.
그래디 부치(Grady Booch)
- 깨끗한 코드는 결코 설계자의 의도를 숨기지 않는다.
- 깨끗한 코드는 단순하고 직접적이고 잘 쓴 문장처럼 읽힌다.
- 오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
- 코드는 추측이 아니라 사실에 기반해야 한다.
- 반드시 필요한 내용만 담아야 한다.
- 코드를 읽는 사람에게 프로그래머가 단호하다는 인상을 줘야한다.
데이브 토마스(Dave Tomas)
- 깨끗한 코드는 작성자가 아닌 사람도 읽기 쉽다.
- 단위 테스트케이스와 인수 테스트 케이스가 존재한다.
- 고치기 쉽다.
- 깨끗한 코드에는 의미 있는 이름이 붙는다.
- 특정 목적을 달성하는 방법은 오직 하나만 제공한다.
- 의존성은 최소이며, 각 의존성을 명확히 정의한다.
- 언어에 따라 필요한 모든 정보를 코드만으로 명확히 표현할 수 없기 때문에 코드는 문학적으로 표현해야 마땅하다.
- 실제로 읽기 쉬운 코드와 고치기 쉬운 코드는 엄연히 다르다.
- 테스트케이스가 없는 코드는 아무리 우아하고 가독성이 높아도 깨끗한 코드가 아니다.
마이클 C. 페더스(Michael Feathers)
- 깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다.
- 작성자가 이미 모든 사항을 고려했으므로, 딱히 손 댈 곳이 없다.
- 고칠 궁리를 하다 보면 언제나 제자리로 돌아온다.
- 누군가 남겨준 코드, 주의깊게 짜놓은 작품에 감사를 느낀다.
존 제프리스(John Jeffreys)
- 모든 테스트를 통과한다.
- 중복이 없다.
- 시스템 내 모든 설계 아이디어를 표현한다.
- 클래스, 메서드, 함수 등을 최대한 줄인다.
워드 커닝햄(Ward Cunningham)
- 코드를 읽으면서 짐작했던 기능을 각 루틴이 그대로 수행한다면 깨끗한 코드라 불러도 된다.
- 코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드라 불러도 된다.
- 깨끗한 코드는 읽으면서 놀랄 일이 없어야 한다.
- 코드를 독해하느라 머리를 쥐어짤 필요가 없어야 한다.
- 읽으면서 짐작한 대로 돌아가는 코드가 깨끗한 코드이다.
6. 보이스카웃 규칙
- 언제나 처음 왔을 때보다 깨끗하게 해놓고 캠핑장을 떠나듯이 코드 또한 기능을 추가하기 전보다 더 깨끗한 상태를 유지해야 한다.
- 잘 짠 코드가 전부가 아니면 한꺼번에 많은 시간과 노력을 투자해 코드를 정리할 필요가 없다.
- 단순히 변수 이름 개선, 긴 메소드 분할, 중복 제거만으로 충분하다.
'Architecture' 카테고리의 다른 글
[Clean Code 정리] 객체와 자료구조 (0) | 2022.05.29 |
---|---|
[Clean Code 정리] 형식 맞추기 (0) | 2022.05.29 |
[Clean Code 정리] 주석 (0) | 2022.05.28 |
[Clean Code 정리] 함수 (0) | 2022.05.28 |
[Clean Code 정리] 의미있는 이름 (0) | 2022.05.28 |
댓글