개발자 99% 커뮤니티에서 수다 떨어요!
오늘 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