클린 코드 | 01. 깨끗한 코드

yeonk·2023년 1월 3일
0

클린 코드

목록 보기
1/3
post-thumbnail

코드가 존재하리라


  • 코드는 요구사항을 상세히 표현하는 수단이다.

  • 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이 프로그래밍이고, 그 결과가 코드이다.



















나쁜 코드


  • 나쁜 코드는 개발 속도를 크게 떨어뜨린다.

  • 나쁜 코드가 쌓일수록 팀의 생산성은 떨어진다.

  • 시간을 들여 깨끗한 코드를 만드는 노력이 비용을 절감하는 방법일 뿐만 아니라 전문가로서 살아남는 길이다.










태도

  • 일정에 쫓기더라도 대다수의 관리자들은 좋은 코드를 원한다.
    그들이 일정과 요구사항을 강력하게 밀어붙이는 이유는 그것이 그들의 책임이기 때문이다.
    좋은 코드를 사수하는 일은 프로그래머들의 책임이다.










원초적 난제

  • 나쁜 코드를 양산하면 기한을 맞추지 못한다.

  • 기한을 맞추는 유일한 방법은 코드를 최대한 깨끗하게 유지하는 습관이다.




















깨끗한 코드


나쁜 코드는 나쁜 코드를 유혹한다.
→ 나쁜 코드를 고치면서 오히려 더 나쁜 코드를 만든다는 뜻

  • 깨끗한 코드와 나쁜 코드를 구분할 줄 안다고 개끗한 코드를 작성할 줄 안다는 뜻은 아니다.

  • 깨끗한 코드를 작성하려면 절제와 규율이 필요하다.

  • '코드 감각'이 있다면 좋은 코드와 나쁜 코드를 구분할 수 있고 절제와 규율을 적용해 나쁜 코드를 좋은 코드로 바꾸는 전략도 파악한다.

  • '코드 감각'이 있다면 나쁜 모듈을 보면 좋은 모듈로 개선할 방안을 떠올릴 수 있다.










비야네 스트롭스트룹(Bjarne Stroustrup)

깨끗한 코드는 보기 즐거운 코드

  • 우아하고 효율적인 코드 → 속도와 자원을 낭비하지 말아야한다.

  • 논리가 간단해야 버그가 숨어들지 못한다.

  • 의존성을 최대한 줄여야 유지보수가 쉬워진다.

  • 오류는 철저히 처리 → 세세한 사항까지 꼼꼼하게 처리할 것

  • 한가지를 제대로 한다. → 한 가지에 집중할 것










그래디 부치(Grady Booch)

깨끗한 코드를 위해 가독성을 고려하자

  • 깨끗한 코드는 단순하고 직접적이다.

  • 잘 쓴 문장처럼 읽힌다.

  • 설계자의 의도를 숨기지 않는다.

  • 명쾌한 추상화와 단순한 제어문으로 가득하다
    → 코드는 추측이 아니라 사실에 기반해야한다. 반드시 필요한 내용만 담는다.










데이브 토마스(Dave Thomas)

작성자가 아닌 사람도 고칠 수 있는 코드.
코드는 작을수록 좋다!

  • 작성자가 아닌 사람도 읽기 쉽고 고치기 쉬워야한다.

  • 단위 테스트 케이스와 인수 테스트 케이스가 존재한다.

  • 의미있는 이름이 붙는다.

  • 목적을 달성하는 방법은 하나만 제공한다.

  • 의존성은 최소이며 각 의존성을 명확히 정의한다.

  • API는 명확하며 최소로 줄인다.

  • 코드는 문학적으로 표현해야 마땅하다. → 인간이 읽기 좋은 코드를 작성하라










마이클 페더스(Michael Feathers)

깔끔하고 단정하게 정리한 코드, 세세한 사항까지 꼼꼼하게 쓴 코드.

  • 깨끗한 코드는 주의깊게 작성한 코드이다.










론 제프리스(Ron Jeffries)

간단한 코드!
중복과 표현력을 신경쓰자.

  • 간단한 코드

    • 모든 테스트를 통과하는 코드

    • 중복이 없는 코드

    • 시스템 내 모든 설계 아이디어를 표현한다.

    • 클래스, 메서드, 함수 등을 최대한 줄인다.





  • 깨끗한 코드 작성을 위하여

    • 중복을 피하라.

    • 한 기능만 수행하라.

    • 제대로 표현하라.

    • 작게 추상화하라.










워드 커닝햄(Ward Cunningham)

읽으면서 짐작한 대로 돌아가는 코드

  • 짐작했던 기능을 각 루틴이 그 대로 수행한다면 깨끗한 코드




















참고자료


로버트 C.마틴, 『Clean Code』, 인사이트

0개의 댓글