클린 코더스 강의 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