DAY21

  • 오늘 읽은 범위 : 클래스 ~p191

책에서 기억하고 싶은 내용을 써보세요

  • 리팩터링 시 코드가 늘어남의 이유는:
    • 서술적인 변수이름을 사용하기에
    • 코드에 주석을 추가하는 수단으로 함수선언과 클래스 선언을 활용하기에
    • 가독성을 높이기 위해 공백을 추가하고 형식을 맞추기에
  • 변경하기 쉬운 클래스-분리된 클래스
    • 클래스 일부에서만 사용되는 비공개 메서드는 코드를 개선할 잠재적인 여지를 시사한다.1
    • 각 클래스가 극도로 단순해지면 코드가 순식간에 이해가 된다. 함수하나가 수정된다고 다른함수가 망가질 위험도 사라진다.
  • 변경으로부터 격리
    • 인터페이스와 추상 클래스를 사용하여 구현이 미치는 영향을 격리해라!
    • 테스트가 가능할 정도로 시스템의 결합도를 낮추면 유연성과 재사용성도 높아진다. == 각 시스템요소가 다른 요소로 부터, 그리고 변경으로부터 잘 격리되어 있다는 의미
    • 본질적으로 결합도를 최소로 줄이면 의존역전원칙DIP를 지키게 되는데 DIP는 본질적으로 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙이다.

오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요

  1. 굉장히 짧은 구간을 읽었지만 그 어떤 장보다도 이해하기가 어려웠던것 같습니다. 이 장에서 다룬 클린코드의 기법은 본질적으로 작은 클래스를 만들고, 변경하기 쉬운 각각의 클래스가 어떤 방식으로 늘어나야하는지 자세하게 설명해주었습니다. 또한, 각 구체적인 클래스를 의존하지 않고 인터페이스를 의존하여 인스턴스 변수를 생성하여 의존도를 낮추게 되면 변경으로부터 격리가 되는 클래스를 만드는 것도 이 장의 마지막 부분에서 다뤄봤습니다. 모두 소화시키지 못한만큼 다시 한번 더 읽어보아야겠지만 클래스를 다루는 개발자로써 굉장히 흥미로운 내용이었던것 같습니다.

궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요

세줄 요약

  • 리팩토링이 코드를 짧게만 만들지 않는다.-오히려 늘어날 확률이 높다!-
  • 변경이 필요할 때 손대야 하는 클래스를 만들지 마라! -변경으로 부터 자유로운 시스템은 작은하나의 책임만 지고 있는 클래스로부터 시작한다!-
  • 구체적인 클래스에 의존하지 말고 추상클래스와 인터페이스를 이용해 클래스를 변경으로부터 격리시켜라!

주석

  1. p186의 목록 10-9와 10-10 예제 참조