개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
SW 개발에는 다양한 접근 방법이 있다.
그 중 설계의 핵심을 잘 알아야 한다. (Easier to Change, Don't Repeat Yourself)
더 나아가 중복을 줄이고 미래에 상황에 대해 대비할 수 있는 설계에 대해 고민해보아야 한다.
TIL (Today I Learned) 날짜
2022. 05. 16
오늘 읽은 범위
2장. 실용주의 접근법
책에서 기억하고 싶은 내용을 써보세요.
좋은 설계의 핵심 : ETC(Easier to Change.) 결합도를 줄이고 단일 책임 원칙을 고수하라. (p.39)
Don't Repeat Yourself : 모든 지식은 시스템 내에서 단 한 번만, 애매하지 않고 권위 있게 표현되어야 한다. (p.43)
직교성 : 하나가 바뀌어도 나머지 부분에 어떤 영향도 주지 않는 성질이 직교성이라 한다. 이를 바탕으로 설계와 빌드, 테스트, 확장이 쉬운 시스템을 만드는데 있어 유의해야 한다. (p.54~55)
가역성 : 하나의 해결책만 고수하지 말고 다른 솔루션으로도 적용할 수 있는 시스템을 설계하라.
예광탄 : 요구 사항으로부터 최종 시스템의 일부 측면까지 빠르게 눈에 보이는 결과물을 만들어줄 것을 찾아야 한다.
프로토타입과 포스트잇 : 프로토타이핑은 학습 경험이다. 이것은 생산한 코드에 있는 것이 아니라 이를 통해 배우는 교훈에 있다. (p.81)
도메인 언어 : 언어의 한계가 곧 자기 세계의 한계이다. (p.85)
모든 언어는 제각기 일련의 특징들을 내세운다. 문제 도메인의 언어가 어떤 프로그래밍 해결 방안을 제안하기도 한다. (p.85)
추정 : 추정치 산출 과정을 통해 여러분의 프로그램이 살고 있는 세계를 좀 더 이해하게 될 것이다. 추정하는 법을 배우고 추정 능력을 계발하여 무언가의 규모를 직관적으로 짚을 정도가 되면, 추정 대상의 가능성을 가늠할 수 있을 것이다. (p.94)
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
이번 장의 핵심은 소프트웨어의 설계를 관철하는 내용이었다. 단일 책임을 고수하여 결합도를 줄이고 중복되는 지식과 코드를 줄여야 한다. 또한 미래의 리스크에 대비하여 추정하는 능력을 계발해야 한다고 한다. 결국에는 지식과 경험의 조화가 엄청나게 많아야 한다는 내용이었다.
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
하스켈 : 하스켈은 순수 함수형 프로그래밍 언어이다. I/O와 같이 필요한 경우가 아니면 Side Effect가 없는 순수 함수로만 만들어졌다.
메타 프로그래밍 : 자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 취급하며 프로그램을 작성·수정하는 것을 말한다. 넓은 의미에서, 런타임에 수행해야 할 작업의 일부를 컴파일 타임 동안 수행하는 프로그램을 말하기도 한다.
오늘 읽은 다른사람의 TIL
니꼬의 fakeDB 예시가 공감이 잘 되었습니다.
요약 정리를 일맥상통하고 깔끔하게 잘 해주셨습니다.