[클린코드] 12장. 창발성

MEUN·2022년 3월 15일
0

< CLEAN-CODE />

목록 보기
16/17
post-thumbnail

4 주차

화 | Assignment #18

  • 📚 12장. 창발성
  • ✔️ TIL

12장. 창발성


📘 책에서 기억하고 싶은 내용

  • 단순한 설계 규칙 4가지 (p.216)
    • 모든 테스트를 실행한다.
    • 중복을 없앤다.
    • 프로그래머의 의도를 표현한다.
    • 클래스와 메소드 수를 최소로 줄인다.
  • 모든 테스트를 실행하라. (p.216)
    • 결합도가 높으면 TC 를 작성하기 어렵고, 테스트가 불가능한 시스템은 검증도 불가능
    • 테스트가 가능한 시스템을 만들기 위해 노력하면 SRP 를 준수하는 클래스를 설계 하게 되고, 결국 설계 품질이 좋아짐
    • TC 를 테스트 코드로 작성하면, 나중에 코드를 정리하여도 정상 작동 여부 확인이 가능함
  • 중복을 없애라 (p.217)
    • 중복은 추가 작업, 추가 위험, 불필요한 복잡도를 뜻함
    • 깔끔한 시스템을 만들려면 단 몇 줄이라도 중복을 제거하겠다는 의지가 필요함
    • 소규모 재사용은 시스템 복잡도를 극적으로 감소시킴
    • TEMPLATE METHOD 패턴은 고차원 중복을 제거할 목적으로 자주 사용됨
  • 프로그래머의 의도를 표현하라 (p.221)
    • 자신이 이해하는 코드를 짜기는 쉬움
    • 하지만, 추후 유지보수할 사람이 코드를 짜는 사람만큼이나 문제를 깊이 이해할 가능성은 희박함
    • 시스템이 점차 복잡해지며 유지보수 개발자가 시스템을 이해한르ㅏ 보내는 시간은 점점 늘어나고 동시에 코드를 오해할 가능성도 점점 커짐
    • 개발자가 코드를 명백하게 짤수록 결함이 줄어들고 유지보수 비용이 줄어듦
    • 코드의 표현력을 높이는 방법
      • 좋은 이름으로 선택
      • 함수와 클래스 크기를 가능한 줄임
      • 표준 명칭 사용
      • 단위 테스트 케이스 꼼꼼히 작성 : TC 는 예제로 보여주는 문서
    • 코드만 실행하고 다음 문제로 직행하는 사례가 너무나도 많아 다음 사람을 위한 배려가 필요함
      나중에 내가 짠 더러운 코드를 읽을 사람은 바로 나 자신일 가능성이 높다는 사실을 잊지 말자
  • 클래스와 메소드 수를 최소로 줄여라 (p.222)
    • 어떤 규칙이든 지나치게 준수하면 과함
      • ex) 클래스마다 무조건 인터페이스를 생성하기, 자료/동작 클래스는 무조건 분리하기 등
    • 가능한 독단적인 견해 대신 실용적인 방식을 택해야 함
    • 목표는 함수와 클래스 크기를 작게 유지하며 동시에 시스템 크기도 작게 유지하는 데 있음
  • 결론 (p.222)
    • 경험을 대신할 개발 기법은 없음

🤔 소감 및 생각

  • 복잡도가 높은 시스템을 유지보수하며 느꼈던 부분을 이 챕터에서 많이 다룬 것 같다.
  • 그리고, 각 챕터의 내용이 결국 하나의 사실을 말하고 있음을 다시 느꼈지만, 모든 사람들이 알고 있지만 간과하기 쉬운 부분인 것 같다. 경험할수록 코드의 표현력이 좋아질거라고 믿고 매일 더 좋은 코드를 짤 수 있도록 노력해야겠다.

🔍 새롭게 또는 다시 알게 된 내용

  • 창발성 : 남이 모르거나 하지 아니한 것을 처음으로 또는 새롭게 밝혀내거나 이루어 내는 성질

0개의 댓글