2장. 실용주의 접근법
소제목
- 중복의 해악
- 직교성
- 가역성
- 예광탄
- 프로토타입과 포스트잇
- 도메인 언어
- 추정
이번 장에서는 소프트웨어를 개발할 때 보편적으로 적용되는 부분에 대한 내용을 다룬다. 특히 '직교성'과 '가역성'에 대한 부분은 실제 소프트웨어의 생산성과 유지보수성에 크게 도움을 주므로 다시 한번 찾아보며 읽기 바란다.
7. 중복의 해악
DRY(Don't Repeat Yourself) 원칙에 대해 설명한다. 가끔 복사-붙여넣기를 통해 살짝만 코드를 수정하려는 유혹에 나는 쉽게 빠졌다. 하지만 조그만 부분을 수정하려 할 때에 모든 부분을 수정해야 하므로, 근본적인 부분을 모듈로 만든 후 한 부분에서만 수정하도록 만드는 것이 장기적인 관점에서 도움이 된다.
8. 직교성
직교성이란 두 벡터가 서로 직각으로 만난다(? 정확하지 않음 내 생각)는 속성이다. 루틴이나 클래스를 만들 때 서로 상호작용하지 않고 독립된 기능을 만들라는 것이 주 내용이다.
한 기능을 수정하려 할 때 여러 부분이 영향을 받고, 이를 내가 확신할 수 없다면, 설계 부터 직교성이 고려되지 않은 것이다.
결합도를 낮추기 위해 독립적인 기능을 하는 루틴과 클래스를 만들자.
9. 가역성
언제나 요구사항이 변할 수 있다는 것을 기억하고, 변하는 부분을 쉽게 반영할 수 있도록 구현해야 한다. 데이터베이스를 변경해야 할 때 전체 프로젝트를 다시 작성해야하는 것이 아니라 데이터 베이스 연동 부분만 수정할 수 있도록 구현하는 것이 가역성의 주 내용이다. 유연한 아키텍쳐를 설계하고 구현하라.
10. 예광탄
완벽하게 동작하지 않는 최종 소프트웨어를 예광탄이라고 한다. 완벽하게 동작하지 않는 최종 소프트웨어라는 말에 모순이 있다. 처음 전체 프로젝트를 일단 동작하게 만들고, 이를 하나씩 완성해가는 것이다. 프로토타입이라고 생각할 수도 있지만, 프로토타입과 다르게 예광탄은 버려지지 않고, 이를 수정해나가 최종 소프트웨어가 된다.
11. 프로토타입과 포스트잇
프로토타입은 언제든 버릴 수 있는 간단한 모듈이다. 간단한 기능이 동작하는지 의심스러울 때, 알고리즘을 확인하고 싶을 때 사용한다.
12. 도메인 언어
읽기 쉬운 언어로 일단 코딩을 작성하는 것이라고 나는 이해했다. 의사코드로 일단 프로그램을 만들고 이를 구현하라는 내용으로 이해했는데 정확하지 않아서 다시 읽어봐야하는 부분이다.
13. 추정
정확한 일정을 추정을 하기 위해서 일정 추정에 사용되는 모든 매개 변수를 고려하고, 기록한 뒤 얼마나 예측과 실제가 맞아떨어지는지 확인하자. 만약 추정이 맞지 않더라도 낙심하지 말고, 왜 맞지 않았는지 원인 분석을 하면 다음에는 이 데이터가 더 정확한 추정을 하는데 도움을 줄 것이다.