DAY2~3
🔖 오늘 읽은 범위 : 2장 (~102P)
<aside>
😃 책에서 기억하고 싶은 내용을 써보세요.
</aside>
- 가장 중요한 항목일 첫번째 항목은 소프트웨어 개발의 진수가 담긴 <항목 8. 좋은 설계의 핵심>: 이다. 모든 것이 여기에 뿌리를 두고 있다. (p. 37)
TIP14
좋은 설계는 나쁜 설계보다 바꾸기 쉽다. <Easier to Change> (p. 39~40)
- 잘 설계된 코드는 바뀜으로써 사용하는 사람에게 맞춰져야 한다.
- 왜 결합도를 줄이면 좋은가? 관심사를 분리함으로써 각각이 더 바꾸기 쉬워지기 떄문이다.
- 왜 단일 책임 원칙이 유용한가? 요구 사항이 바뀌더라도 모듈 하나만 바꿔서 반영할 수 있기 때문이다.
- 왜 이름 짓기가 중요한가? 이름이 좋으면 읽기 쉬워지고, 코드를 바꾸려면 코드를 읽어야 하기 때문이다.
- 스스로에게 자꾸 물어봐라 “내가 방금 한 일이 전체 시스템을 바꾸기 쉽게 만들었을까? 어렵게 만들었을까? 파일을 저장할 때마다 물어보라. 테스트를 쓸 때도, 버그를 수정할 때도 물어보라.
TIP15
DRY: 반복하지 말라 (p.43~47)
- 우리는 DRY가 ‘실용주의 프로그래머’의 도구 상자에서 가장 중요한 도구 중 하나라고 생각한다.
TIP17
관련 없는 것들 간에 서로 영향이 없도록 하라. (p. 56~62)
- 직교적인 시스템을 작성하면 두가지 큰 장점이 있다. 바로 생산성 향상과 리스크 감소다.
- 생산성 향상
- 변화를 국소화해서 개발 시간과 테스트 시간이 줄어든다. 상대적으로 작고, 자족적인 컴포넌트들을 작성하는 것이 하나의 커다란 코드 덩어리를 만드는 것보다 더 쉽다.
- 이상적인 상황이라면 하나의 기능을 바꾸는 것은 여전히 단 하나의 모듈에만 영향을 미쳐야 한다.
- 자신이 작성하는 코드를 항상 비판적으로 바라보는 습관을 길러라.
- 프로토타이핑 대상
- 아키텍처
- 기존 시스템에 추가할 새로운 기능
- 외부 데이터의 구조 혹은 내용
- 외부에서 가져온 도구나 컴포넌트
- 성능 문제
- 사용자 인터페이스 설계
- 프로토타이핑은 학습경험이다. 프로토타이핑의 가치는 생산한 코드에 있는 것이 아니라 이를 통해 배우는 교훈에 있다. 이것이 프로토 타이핑의 진정한 핵심이다. (p. 81)
TIP21
프로토타이핑으로 학습하라 (p.81)
- 여러분이 계산한 추정치를 기록으로 남겨라. 그리고 각 추정치가 얼마나 정확했는지도 기록으로 남겨라. 만약 오차가 50% 이상이라면 잘못된 추정치를 내게 된 원인지 무엇인지 찾아보라.
<aside>
🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
</aside>
- 우리가 코딩보다 힘써야 하는 것은 시스템에 대한 이해라고 생각한다. 실제로 현업에서 어떻게 데이터가 흘러가고, 어떤 모듈을 사용해야 되고, 어떠한 알고리즘을 다뤄야 하는지 끊임없이 고민해야 한다.
- 내 생각으로는 프로그래머에게 반복은 악중에 최악이다. 하지만 아직도 잘 되지 않는다. 이것은 아마 평생 안고 가야할 숙제 일 것 같다.
- 직교적인 시스템은 클린 코드에도 잘 명시 되어 있다. ‘하나의 함수는 하나의 기능만 해야 한다.’ 실제로 이것을 적용해보니 디버깅과 리팩토링에도 아주 큰 도움이 되고 있다.
- 지금 업무에서 외부 API를 사용해야 하는 경우가 많아 졌다. 오늘도 프로토 타입으로 2가지를 만들고 왔는데, 무에서 유를 창조하다보니 배우는게 상당히 많았다. 끊임 없는 도전이 나를 발전시키는 것을 또 다시 깨달았다.
- 기록은 중요하다. 내가 무엇을 고민하고, 무엇을 지켜야 하고, 무엇을 해야 하는지에 대한 명확한 가이드가 있어야 한다. 물론 그 가이드는 틀릴수도 있고 정확할 수도 있다. 아무런 계획없이 코딩하려고 하지 말자.
<aside>
🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
</aside>