Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL 2장 실용주의 접근법
#pragmatic
2년 전
1,023

오늘 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

seungmin님의 TIL