개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
DRY(Don't Repeat Yourself): 반복하지 말라
관련 없는 것들 간에 서로 영행이 없도록, 재사용하기 쉽게 만들라
새로운 프로젝트에서 ‘예광탄 개발'을 활용하자
TIL (Today I Learned)날짜
2022.05.15
오늘 읽은 범위
2장. 실용주의 접근법
책에서 기억하고 싶은 내용을 써보세요.
1좋은 설계의 핵심은 ETC(Easier to change)의 원칙을 따르는 것이다.p.38
결합도를 줄이면 관심사를 분히람으로써 각각이 더 바꾸기 쉽다
단일 책임 원칙은 요구 사항이 바뀌더라도 모듈 하나만 바꿔서 반영할 수 있기에 유용하다
이름이 좋으면 코드가 읽기 쉬워지고 코드를 바꾸기도 쉽워진다.
2. 소프트웨어를 신뢰성 높게 개발하는 유일한 길, 개발을 이해하고 유지 보
수하기 쉽게 만드는 유일한 길은 우리가 DRY라 부르는 원칙을 따르는 것이
라 생각한다. p.42
모든 지식은 시스템 내에서 단 한 번만, 애매하지 않고, 권위 있게 표현되어야 한다.
코드의 중복(모든 코드 중복이 지식의 중복은 아니다), 데이터내의 중복, 무서화 중복
표현상의 중복-내부 API에서 생기는 중복, 외부 API에서 생기는 중복, 데이터 저장소와의 중복
개발자 간의 중복
3. 관련 없는 것들 간에 서로 영향이 없도록 하라.(직교성) p.56
헬리콥터 예가 묘사하듯이 비직교적인 시스템은 본질적으로 변경과 조정이
더 복잡하다. 시스템의 컴포넌트들이 고도로 상호 의존적인 경우 특정 부분
만 국지적으로 수정하는 방법이란 없다.
우리가 설계하고 싶은 것은 자족적self-contained인 컴포넌트, 즉 단일하고 잘 정의
된 목적을 가진 독립적인 컴포넌트다.
생산성 향상
리스크 감소
설계-툴킷과 라이브러리-코딩-테스트-문서화 모든 과정에 걸쳐 직교성을 지켜라
4. 가역성 p.66
DRY 원칙, 결합도 줄이기,외부 설정 사용하기를 따른다면 중요하면서도 되돌릴 수 없는 결정의 수를 가능한 한 줄일 수 있을 것이다. 되돌릴 수 없는 결정을 줄여야 하는 까닭은 우리가 프로젝트 초기에 늘 최선의 결정을 내리지는 못하기 때문이다.
최종 결정이란 없다.
유행을 좇지 말라.
5. 예광탄 p.71
예광탄은 일반 탄환들 사이에 일정한 간격으로 끼어 있다. 예광탄이 발사
되면 그 안에 든 인 성분이 발화하여 총과 총알의 탄착지점 사이에 빛의 궤적
을 남긴다. 만약 예광탄이 목표물을 맞힌다면 일반 탄환도 마찬가지로 맞힐
것이다. 군인들은 발사된 예광탄을 사용하여 조준을 재조정한다. 실제 상황
에서의 실시간 피드백이기 때문에 매우 실용적이다.
프로젝트에서도 이 원리는 마찬가지다. 전에 만들어진 적이 없는 전혀 새
로운 것을 만들고 있다면 더욱 그렇다. 움직이는 목표물을 맞히려면 실제 조
건하에서 즉각적인 피드백을 받아야 한다. 우리는 이것을 시각적으로 묘사
하기 위해 ‘예광탄 개발’이라는 말을 쓴다.
예광탄 코드는 한 번 쓰고 버리려고 만드는 것이 아니다. 앞으로도 계속 사
용할 코드다. 예광탄 코드도 다른 제품 코드와 마찬가지로 오류 검사, 올바른
구조, 문서화, 자체 검사self-checking를 갖추어야 한다. 예광탄 코드에는 아직
모든 기능이 들어 있지 않을 뿐이다. 하지만 시스템을 구성하는 요소를 모두
연결해 놓은 후라면 목표물에 얼마나 근접했는지 확인할 수 있으며, 필요하
다면 조정도 할 수 있다. 일단 정확하게 조준하고 나면 기능을 추가하는 일은
쉽다.
사용자가 뭔가 작동하는 것을 일찍부터 보게 된다
개발자가 들어가서 일할 수 있는 구조를 얻는다
통합integration 작업을 수행할 기반이 생긴다
보여줄 것이 생긴다
진행 상황에 대해 더 정확하게 감을 잡을 수 있다
예광탄 코드 VS 프로토타이핑
예광탄 코드는 기능은 별로 없지만 완결된 코드이며, 최종 시스템 골격 중 일부가 된다.
프로토타입은 최종 시스템의 어떤 특정한 측면을 탐사해 보는 것이 목표다. 진짜 프로토타입 방식을 따른다면 프로토타입은 어떤 개념을 실
험해 보느라 대충 끼워 맞추어 구현한 것이므로 모두 버려야 한다. 그리고 실
험 과정에서 얻은 교훈을 바탕으로 코드를 새로 작성한다
6. 도메인 언어 P.89
7. 추정으로 놀람을 피하라 P.94
코드와 함께 일정도 반복하며 조정하라. P.101
무엇을 묻고 있는지 이해하라
시스템의 모델을 만들어라
모델을 컴포넌트로 나눠라
각 매개 변수에 값을 할당하라
답을 계산하라
여러분의 추정 실력을 기록하라
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
책에서 계속 강조하는 부분이 유연한 코드 작성인것 같다. 고치기 쉽고 코드간의 영향이 적어 한부부만 고쳐도 프로그램이 작동하게 독립적으로 만드는것의 중요함을 다시 한번 느꼈다.
예광탄이라는 말을 처음 들었는데 너무나 공감이 가는 말이었다. 내가 공부하면서도 느끼는, 고치고 싶은 부분이 이론(언어)를 마스터하고 문제를 풀어야지 하다가 이론도 활용못하고 계속 잊게 되는데도 조금 비슷한 부분이 있는 것 같다. 사용자의 입장에서는 어떻게 진행되는지 눈으로 보여주는게 재일 이해가 될 것이고 코드를 하나씩 입혀나가면서 프로젝트를 마무리 하는게 개발자의 입장에서도 더 효율적인 길을 갈 수 있을 것 같다. 아직은 공부를 하는 입장에서는 내가 배운 이론으로 작은 코드라도 써보면서 확인해봐야 겠다는 생각을 한다.
오늘 읽은 다른사람의 TIL