Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 2장. 실용주의 접근법
#pragmatic
2년 전
729

오늘 TIL 3줄 요약

  • ETC. 코드의 결합도를 낮추고 응집도를 높여라

  • DRY. 반복하지 말라

  • 작업 환경에 따라 예광탄 접근방식 혹은 프로토타입을 적절히 사용하라

TIL (Today I Learned) 날짜

2022. 03. 21

오늘 읽은 범위

2장. 실용주의 접근법

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

  • 우리가 아는 한 세상의 모든 설계 원칙은 ETC의 특수한 경우다. (p. 39)

  • 교체 가능하게 작성하라는 말은 코드의 결합도를 낮추고 응집도를 높이라는 이야기일 뿐이다. (p. 40)

  • 프로그래머는 늘 유지 모수 모드에 있다. 유지 보수는 별개의 활동이 아니며 전체 개발 과정의 일상적인 부분이다. (p. 42)

  • 모든 지식은 시스템 내에서 단 한 번만, 애매하지 않고, 권위 있게 표현되어야 한다. (p. 43)

  • DRY 여부를 판별할 수 있는 리트머스 시험지가 있다. 코드의 어떤 측면 하나를 바꿔야 할 때 여러 곳을 바꾸고 있나? 그것도 여러 가지 다른 형태를? (p. 44)

  • 틀렸다. 코드는 동일하지만 두 함수가 표현하는 지식은 다르다. 두 함수는 각각 서로 다른 것을 검증하고 있지만, 우연히 규칙이 같은 것뿐이다. 이것은 우연이지 중복이 아니다. (p. 47)

  • 모듈이 자료 구조를 노출하면 언제나 모듈의 구현과 그 자료 구조를 사용하는 코드 사이에 결합이 생긴다. (p. 50)

  • 컴퓨터 과학에서 이 용어(직교성)는 일종의 독립성이나, 결합도 줄이기를 의미한다. 하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교한다고 할 수 있다. (p. 55)

  • 직교적인 시스템을 작성하면 두 가지 큰 장점이 있다. 바로 생산성 향상과 리스크 감소다. (p. 57)

  • 설계가 직교적인지 확인하는 손쉬운 방법이 있다. '특정 기능에 대한 요구 사항을 대폭 변경하는 경우 몇 개의 모듈이 영향을 받는가?' 직교적인 시스템에서는 답이 '하나'여야 한다. (p. 59)

  • 현실 세계의 변화와 설계 사이의 결합도를 얼마나 줄였는지도 확인해보기 바란다. 자신의 힘으로 제어할 수 없는 속성에 의존하지 말라. (p. 60)

  • 싱글턴을 사용할 때는 주의를 기울여라. 싱글턴은 불필요한 결합을 만들 수 있다. (p. 62)

  • 단위 테스트를 작성하는 행위 자체가 직교성을 테스트해 볼 수 있는 기회다. (p. 63)

  • 되돌릴 수 없는 결정을 줄여야 하는 까닭은 우리가 프로젝트 초기에 늘 최선의 결정을 내리지는 못하기 때문이다. 여러분이 할 수 있는 것은 바꾸기 쉽게 만드는 것이다. 외부의 API를 여러분이 만든 추상화 계층 뒤로 숨겨라. (p. 68-69)

  • 소프트웨어 프로토타입도 같은 이유에서 같은 방식으로 만든다. 즉, 위험 요소를 분석하고 노출시킨 후, 이를 매우 저렴한 비용으로 바로잡을 기회를 얻는 것이다. (p. 80)

  • 세부 사항을 포기할 수 없는 환경에 처해 있다면 진짜로 프로토타입을 만들고 있는 게 맞는지 자문해 보라. (p. 80)

  • 프로토타이핑으로 조사할 대상은 무엇인가? 위험을 수반하는 모든 것이다. 이전에 해 본 적이 없는 것, 최종 시스템에 매우 중요한 것이 프로토타이핑 대상이다. (p. 81)

  • 프로토타이핑은 학습 경험이다. 프로토타이핑의 가치는 생산한 코드에 있는 것이 아니라 이를 통해 배우는 교훈에 있다. (p. 81)

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

  • 전반적으로 이상하게 글이 잘 안 읽힌다. 같은 문장을 여러 번 읽은 구간이 많다. 아직 이해하기에 경험이 좀 부족한가보다.

  • 직교성과 관련된 부분을 읽는데 자꾸 코로나와 거리두기가 생각난다(???) <컴포넌트들이 각기 격리 되어 있으면...> 부분을 읽는데 '자가 격리'로 읽히고... <감염된 코드가 격리되어 있다. 어떤 모듈이 병에 걸렸다 해도 시스템의 나머지 부분으로 증상이 전파될 확률이 낮다.> 는 마치 이 시대를 대표하는 문장 같았다 😂 이해가 잘 되었다 하하하

  • TOPIC 11 까지는 나름 이해할만 했고(이 사이사이에도 좀 어려운 부분이 있었다) 이런 부분들을 좀 더 생각해보며 작성해야겠다 싶었고, 예광탄은 처음엔 이해가 잘 되지 않았는데 뒷쪽으로 읽어가며 다음에 새로운 프로젝트를 할 때 다시 읽고 이 부분을 생각해보며 뼈대를 먼저 잡아봐야겠다는 생각이 들었다. 아직 어려운 부분들이 많아서 이번 노개북에서 한 번 쭉 읽고 나서 나중에 다시 한번 읽어봐야겠다는 생각이 들었다.

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

  • 예광탄 접근 방식과 프로토타이핑에 대해서는 아직 완벽히 이해되지 않았지만 다시 한 번 곱씹으며 프로젝트 할 때 한 번 어떻게 적용시킬 수 있는지 생각해봐야겠다 싶었는데

  • 도메인 언어와 추정 파트는 아직 크게 와 닿지는 않았다. 이번 장 중에 가장 이해가 안 된 부분이다. 다만 추청 파트 중 프로젝트의 일정 추정 부분에 대해서는 '도전해 볼 것'에도 나와있듯이 개인 프로젝트를 할 때 한 번 기록해봐야겠다는 생각이 들었다.

오늘 읽은 다른사람의 TIL