개발자 99% 커뮤니티에서 수다 떨어요!
TIL (Today I Learned) 날짜
2022. 05. 16
오늘 읽은 범위
2장. 실용주의 접근법
책에서 기억하고 싶은 내용을 써보세요.
- 모든 지식은 시스템 내에서 단일하고, 애매하지 않고, 정말로 믿을만한 표현양식을 가져 야한다.
- Tip> DRY: 반복하지 마라(Don't Repeat Yourself)
- 어떻게 중복이 생기는가? => 강요된(impose) 중복. / 부주의한 중복. / 참을성 없는 중복. / 개발자간의 중복.
- Tip> 재사용하기 쉽게 만들라.
- Tip> 관련 없는 것들 간에 서로 영항이 없도록 하라.
- 코드의 결합도를 줄여라. / 전역(global) 데이터를 피하라. / 유사한 함수를 피하라.
- DRY 원리는 시스템 내부의 중복을 최소화시키고, 직교성은 시스템 컴포넌트 간의 상호의존도를 줄인다.
- Tip> 최종 결정이란 없다.
- Tip> 목표물을 찾기 위해 예광탄을 써라.
- 예광탄 코드는 나중에 버리려고 만드는 것이 아니다. 그것은 계속 시용할 코드다. 예광탄 코드에도 상용 코드와 마찬가지로 모든 에러 검사, 구조화, 문서화, 자기 검사가 포함된다. 단지 예광탄 코드에는 아직 완전한 기능이 들어있지 않을 뿐이다.
- 예광탄 개발 방법은 프로젝트는 결코 끝나지 않는다는 관념과도 일맥상통한다. 변화에 대한 요구와 추가할 기능은 언제나 계속 생기기 마련이다. 예광탄 개발 방법은 점진적인 접근 방법이다.
- 예광탄 코드접근방법 장점 => 사용자들은 뭔가 작동되는 것을 일찍부터 보게 된다. / 개발자들은 들어가서 일할 수 있는 구조를 얻는다. / 통합 작업을 수행할 기반이 생긴다. / 보여줄 것이 생긴다. / 진전 상황에 대해 더 정확하게 감을 잡을 수 있다.
- 예광탄 코드 기법은 일이 어떻게 될지 100% 확신할 수 없는 상황에서 사용된다.
- 프로토타입은 최종 시스템의 어떤 특정한 측면을 탐사해 보는 것이 목표다.
- 예광탄 코드 접근 방법은 다른 종류의 문제에 대한 대응 방법이다.
- 프로토타입은 나중에 버릴 수 있는 코드를 만든다. 예광탄 코드는 기능은 별로 없지만 완결된 코드이며, 최종 시스템 골격의 일부를 이룬다.
- 프로토타입을 예광탄이 하나라도 발사되기 전에 먼저 일어나는 정찰과 정보 수집으로 생각하면 되겠다.
- Tip> 프로토타입을 통해 학습하라.
- 프로토타입을 만들 때 무시해도 좋은 세부사항은 무엇인가? => 정확성(correctness) / 완전성(completeness) / 안정성(robustness) / 스타일(style)
- Tip> 문제 도메인에 가깝게 프로그래밍하라.
- Tip> 추정을 통해 놀람을 피하라.
- 항상좋은 답을 알려주는 기본적인 추정 기술에 대해 이야기해주고 싶다. 이미 그 일을 해본 사람에게 물어보라는 것이다.
- 무엇을 묻고 있는지를 이해하자. / 시스템의 모델을 만들어보라. / 모델을 컴포넌트로 나누어라. / 각 매개 변수에 값을 주어라. / 답을 계산하라. / 추정치를 기록하는 용기.
- 프로젝트 일정 추정하기 => 요구사항 체크하기 / 위험 분석하기 / 설계, 구현, 통합 / 사용자와 함께 검증하기
- Tip> 코드와 함께 일정도 반복하며 조정하라
- 누군가 추정에 대해 물으면 무엇이라 대답해야 할까? 나라면 '나중에 전화드릴께요.' 라 말할 것이다. 프로젝트 도중 숨을 고르고, 잠시 시간을 내어 이번 항목에서 기술한 단계를 밟아나간다면 더 정확한 추정치를 알려줄 수 있다. 자판기 앞에서 말한 추정치는 커피와 마찬가지로 여러분에게 해를 끼칠 것이다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
- 이번 챕터를 읽으면서, 큰 숲을 본 것 같다.(항상 코딩시 나무만 파고 들어갔다는 느낌이다.)
- 나름 책을 요약하자면 최대한 중복을 피하며(중복의 해악), 독립적이여야 하고(직교성), 항상 변화하는 것을 기억하고(가역성), 상황에 맞는 코드접근방식(예광탄, 프로토타입)을 쓰며, 일정 시간을 가늠할 수 있어야 한다.(추정)
- 특히 '도메인 언어' 챕터는 이해하기 어렵고 와닿지는 않지만 앞으로 접해보고 공부해 봐야 겠다.