클린 코더스 강의 12. SOLID Foundation
https://www.youtube.com/watch?v=HIWJ8sF8lO8&list=PL7pUrjEGbG8ZMPQ-XukPJsFyMeyvtGcnV&index=14
소프트웨어 공학에서 말하는 설계란 무엇인가?
코드가 곧 설계다
1992 Jack W Reeves "What is Software Design?"
https://www.developerdotstar.com/mag/articles/reeves_design.html
건설에서는 설계는 문서지만 소프트웨어에서는 설계는 소스코드이다.
설계가 잘못되었을때 나타나는 징후
Rigidity
시스템의 의존성으로 인해 변경하기 어려워진다. 많은 시간이 소요되는 테스트 빌드 작은 변화로 인해 전체 리빌드를 유발함
Fragility
한 모듈의 수정이 다른 모듈에 영향을 미칠때 발생한다. 모듈간의 의존성을 제거하기 위해 노력해야 한다.
Immobility
재사용을 할 수 없는 모듈이다. DB, UI, Framewrok 결합도를 없애기 위해 노력해야 한다.
Needless Complexity
우리는 미래를 알 수 없기 때문에 미래를 예측해서 구현한다면 불필요한 복잡성이 생긴다. 현재 요구사항에 집중해서 개발해야 한다.
https://brunch.co.kr/@cleancode/18
로버트 C 마틴은 우리는 미래를 예측할 수 있는 크리스탈 볼이 없다고 한다. 우리는 마법의 구술이 없기 때문에 요구사항을 확정하고 이후에 변경을 불허하는 전략을 취할 수 없다.
즉, 변화를 예측하는 것이 아니라 대응하는 것이다.
Last updated