오늘의../이달의 책

[노개북] 실용주의 프로그래머 (2장.실용주의 접근법)

호마 2022. 3. 22. 00:27

오늘 읽은 범위 🔖 2장.실용주의 접근법

📝 책에서 기억하고 싶은 내용
  • 요구사항은 항상 변한다 -> 소프트웨어를 신뢰성 높게 개발하고... 유지보수하기 쉽게 만드는 유일한 길 -> DRY 원칙을 따라라 (p. 66)
    • 반복하지 마라 DRY, Don't Repeat Yourself
  • 참을성 없는 중복: 만약 이런 유혹을 느낀다면 '돌아가는 길이 지름길이다'라는 진부한 격언을 기억하라 (p.73)
  • 직교성 Orthogonality: 두 직선이 직교하는 경우, 두 개의 선은 '독립적'이다. -> 결합도 줄이기(decoupling) 하나가 바뀌어도 나머지에 어떤 영향도 주지 않은 경우.. (p. 76)
    • 장점: 생산성 향상, 리스크 감소
    • 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming): 로깅과 같은 공통 기능은 여러 클래스에 퍼져 있기 쉽다는 단점에 착안. (요즘은 Spring AOP가 유명하다.) (p. 83)
  • 가역성: 최종 결정이란 없다. (p. 92) 요구사항을 메타데이터에 넣고, 필요한 수행문을 코드에 넣을 때... 메커니즘을 자동화시켜라. 그리고...이를 되돌릴 수 있도록 하라 (p. 94)
  • 예광탄 Tracer Bullet 코드: 단순하지만 동작은 하는 것, 만들어서 살을 붙여나가는 것 <-> 프로토타이핑: 나중에 버릴 수 있는 코드, 만들어본 뒤 지우고 다시 만드는 것 (p. 100, 101)
  • 프로토타입의 대상 = 위험을 수반하는 모든 것, 이전에 해본 적이 없는 것, 최종 시스템에 매우 중요한 것. 실험적인 것 (p. 105)
  • 프로토타입의 가치 = 생성된 코드가 아니라 이를 통해 배우게 되는 교훈 (p. 106)
  • 프로토타입을 코드로 만들 때는 ... 모든 사람에게 ... 폐기처분할 코드를 작성하고 있다는 사실을 이해시켜야한다. (p. 108)
    • 배포하자고 주장하기 쉽기 때문
  • 도메인 언어, 소형 언어, 메타프로그래밍: 더 높은 추상화 수준에서 작업함으로써 사소한 구현의 세부사항을 무시하고 도메인의 문제를 푸는데만 집중할 수 있다. (p. 112) 유지보수를 쉽게 하기 위한 방법이기도 하다. (p. 116)
  • 추정치를 기록하는 용기: 계산한 추정치를 기록해 놓고, 이 값이 실제 결과에 얼마나 가까운지를 평가해 보는 것은 좋은 방법이다. (p. 125) 
💭 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보기

프로토타이핑을 예광탄의 개념으로 알고 있었는데, 프로토타이핑은 나중에 버릴 수도 있는 코드라는 점을 처음 알았다. 예광탄이라는 말은 잘 쓰지 않는 것 같다. 

도메인 언어, 소형 언어 부분은 처음엔 잘 이해가 되지 않았는데 언어를 만들어 요구사항을 유연하게 처리할 수 있도록 하는 것으로 이해했다. 내공이 더 쌓이면 시도해보고 싶은데 언제쯤 시도해볼 수 있을지.. 사실 엄두가 나지 않는다..😅

일정을 추정하는 것이 아직도 어려운데 기록하고 평가해보는 방법을 시도해볼 것이다.

🔍 궁금하거나 잘 이해되지 않는 내용

 

없음

 


오늘의 TIL 3줄 요약

 

  • 결합도 줄이기(decoupling) -> 생산성 향상, 리스크 감소
  • 최종 결정이란 없다. 요구사항을 메타데이터에 넣고, 필요한 수행문을 코드에 넣을 때... 메커니즘을 자동화시켜라. 그리고...이를 되돌릴 수 있도록 하라
  • 추정치를 기록하는 용기: 계산한 추정치를 기록해 놓고, 이 값이 실제 결과에 얼마나 가까운지를 평가해 보는 것은 좋은 방법이다.