1. 깨끗한 코드

소울치킨·2022년 4월 23일
0

클린코드

목록 보기
3/9
post-thumbnail
  • 코드는 요구사항을 상세히 표현하는 수단이다.
    어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현하기란 불가능하고 추상화도 불가능하다.
  • 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이 프로그래밍이고 이것을 명시한 결과가 코드다.

나쁜 코드

  • 나쁜 코드에 발목잡혀 고생한 기억. 이를 고행(wading)이라 한다.
    나쁜 코드를 작성하는 이유는 보통 "나중에 손보면 된다, 바쁘니까." 이다. 나중은 절대 오지 않는다.

나쁜 코드의 대가

  • 코드가 엉망이라면 나중에 진도를 못나가게 된다. 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 초반에는 번개처럼 나가다가 어느순간 굼뱅이가 된다.
    얽히고설킨 코드를 해독해서 코드를 더한다. 쓰레기 더미는 점점 높아지고 청소할 방법이 없어진다.
  • 결국 판을 다시 짠다. 문제를 느낀 사람들은 재설계를 한다.

태도

  • 관리자는 일정과 요구사항을 강력하게 밀어붙힌다. 그게 그들의 책임이다. 그렇다면 좋은 코드를 사수하는 일프로그래머의 책임이다.
  • 기한에 맞추려면 나쁜 코드가 나올 수 밖에 없다. 빨리 가려고 시간을 들이지 않는다.

그렇다면 이를 해결할 유일한 방법은. 언제나 코드를 최대한 깨끗하게 유지하는 습관이다.

깨끗한 코드 작성

  • 자잘한 기법들을 사용하는 절제와 규율이 필요하다.
  • 절제와 규율을 사용해 나쁜 코드를 좋은 코드로 바꾸는 전략도 파악해야한다.
  • 나쁜 코드와 좋은 코드를 구분하는 코드 감각을 갖도록 트레이닝해야한다.

나는 우아하고 효율적인 코드를 좋아한다. 논리가 간단해야 버그가 숨어들지 못한다. 오류는 명백한전략에 의거해 철저히 처리한다. ... 깨끗한 코드는 한 가지를 제대로 한다

비야네 스트롭스트룹(Bjarne Stroustrup) (C++ 창시자)

  • 깨끗한 코드는 '보기에 즐거운(우아한)' 코드다.
  • 깨끗한 코드는 한 가지에 집중한다. 주변 상황에 현혹되거나 오염되지 않은 채 한 길만 걷는다.

깨끗한 코드는 단순하고 직접적이다. 잘 쓴 문장처럼 읽힌다. 설계자의 의도를 숨기지 않는다.
오히려 명쾌한 추상화와 단순한 제어문으로 가득하다.
그래디 부치(Grady Booch)

  • 그래디는 가독성을 강조한다.
  • 코드는 명쾌해야한다. 추측이 아니라 사실에기반해야한다. 반드시 필요한 내용만을 담아 읽는 사람에게 단호한 인상을 줘야한다.

깨끗한 코드는 타인이 읽기 쉽고 고치기 쉽다. 테스트 케이스가 존재한다.
깨끗한 코드에는 의미있는 이름이 붙는다. 의존성은 최소이며 각 의존성을 명확히 정의한다.
큰(big) 데이브 토마스 (Dave Thomas)

  • 깨끗한 코드는 타인이 고치기 쉽다. -> 유지보수에 용이하다.
  • 아무리 코드가 우아하고, 가독성이 높아도, 테스트 케이스다 없으면 깨끗하지 않다.

깨끗한 코드는 언제나 누군가 주의 깊게 짰다는 느낌을 준다.
고치려고 살펴봐도 딱히 손 댈 곳이 없다. 작성자가 이미 모든 고려를 했기에 고칠 궁리를 해도 원래로 돌아온다.

  • 깨끗한 코드는 누군가 시간을 들여 깔끔하고 단정하게 정리한 코드다. 세세한 사항까지 꼼꼼하게 신경쓴, 주의를 기울인 코드다.

론 제프리스(Ron Jeffries) 코드 구현 규칙

  • 모든 테스트를 통과한다.
  • 중복이 없다.
  • 세스템 내 모든 설계 아이디어를 표현한다.
  • 클래스, 메서드, 함수 등을 최대한 줄인다.
  • 표현력 높이기
  • 초반부터 간단한 추상화 고려하기

짐작했던 기능을 그대로 수행한다면 깨끗한 코드다.
워드 커닝햄(Ward Cunningham)

  • 깨끗한 코드를 읽으면서 놀랄 일이 없어야한다. 잘 짜여놓은 코드는 어이 없을 정도로 단순하게 설계한 것처럼 보인다.

저자의 생각

  • 새 코드를 짜면서 끊임없이 기존 코드를 읽는다. 읽기 쉬운 코드가 짜여져 있어야 새 코드를 짜기 쉽다. 아무튼 빠르게, 그렇지만 읽기 쉽게 코드를 만들어야한다.

보이스카우트 규칙

  • 캠프장은 처음 왔을 때보다 더 깨끗하게 해놓고 떠나라.
  • 체크아웃할 때보다 더 깨끗한 코드를 체크인한다면 코드는 나빠지지 않는다. 한꺼번에 할 필요 없다. 하나씩 개선한다. 시간이 지날수록 코드가 좋아진다.
profile
소울치킨입니다

0개의 댓글