오늘의../이달의 책

[노개북] 실용주의 프로그래머 (5장. 구부러지거나 부러지거나)

호마 2022. 3. 26. 10:00

오늘 읽은 범위 🔖 5장. 구부러지거나 부러지거나

📝 책에서 기억하고 싶은 내용
  • 결합도 줄이기
    •  열차 사고: 메서드나 속성들이 모두 연결되어있는 코드. 코드가 지저분하고 고치기 어렵고 코드를 이해하기 위해 알아야하는 것이 너무 많다. (p. 185 ~ 186) <-> 함수 파이프라인 (p. 189) 
      • 묻지 말고 답하라(Tell, Don't Ask, TDA): 객체가 하는 일을 위임하라. (객체에서 내부 객체를 호출하지 말고, 불필요하게 분리된 함수는 합치기)
    • 데메테르 법칙, 디미터 법칙 (Law of Demeter, LoD): 깨끗하고 결합도가 낮은 함수를 작성하는 방법, 사실 실현하기 어려움
      • 어떤 클래스 C에 정의된 메서드가 다음 목록에 속하는 것만 사용할 수 있다.
        • C의 다른 인스턴스 메서드
        • 메서드의 매개 변수
        • 스택이나 힙에 자신이 생성하는 객체의 메서드
        • 전역 변수 (-> 사실 사용하지 않는게 낫다. 어디서나 결합할 수 있는 존재이기 때문이다.)
      • 간단하게 정리하자면, 메서드 호출을 엮지 말라! 무언가에 접근할 때 "."을 딱 하나만 쓰려고 노력해보자
    • 결국은 모두 ETC(Easy To Change?)다.
  • 이벤트
    • 유한 상태 기계 (Finite State Machine, FSM): 이벤트를 어떻게 처리할지 정의한 명세, 상태, 이벤트, 이벤트별 상태, 상태를 이행하면서 수행할 행동에 대해 정의할 수 있다. (p. 197 ~ 198)
    • 감시자 패턴(observer pattern): UI 구현할 때, 화면에서 어떤 상호 작용이 일어났는지 콜백으로 알려주는 방식으로 널리 쓰인다. 동기적으로 처리
    • 게시-구독 모델(Publish-Subscribe, pubsub): 각 채널에 이름이 있고, 구독자가 하나 이상의 채널에 등록하고, 게시자는 채널에 이벤트를 보낸다. 비동기적으로 처리
    • 반응형 프로그래밍(Reactive Programming): 값이 바뀌면 그 값을 사용하는 다른 값이 반응하는 것. 예시로 RxJS 라이브러리
  • 상속세
    • 상속 대신 사용할 것
      • 인터페이스와 프로토콜 | 위임(delegation) | 믹스인과 트레이트

 

 

💭 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보기
  • 아무나 알려줄 수 없는 고급 기술에 대한 내용인 것 같다.. 어렵지만 충분히 이해하기위해 그만큼 더 파고들게 되었다. 조금 더 시간이 지나고 내공이 쌓였을 때 다시 읽으면 소감이 다를 것 같다.
🔍 궁금하거나 잘 이해되지 않는 내용
  • 변환 프로그래밍 부분

오늘의 TIL 3줄 요약

  • 결합도 줄이기: 무언가에 접근할 때 "."을 딱 하나만 쓰려고 노력해보자
  • 결국은 모두 ETC(Easy To Change?)다.
  • 상속 대신 인터페이스와 프로토콜, 위임(delegation) 사용하기