본문 바로가기
Study/클린코드

[클린코드] 11장. 시스템

by Nahwasa 2023. 1. 21.

스터디 메인 페이지

- ☆ 표시가 붙은 부분은 스터디 중 나온 얘기 혹은 제 개인적인 생각이나 제가 이해한 방식을 적어놓은 것으로, 책에서 말하고자 하는 바와 다를 수 있습니다.

- 모든 이미지의 출처는 클린 코드(로버트 C. 마틴 저) 책 입니다.

 


 

11장. 시스템

소프트웨어 시스템은 애플리케이션 객체를 제작하고 의존성을 서로 '연결'하는 준비 과정과 준비 과정 이후에 이어지는 런타임 로직을 분리해야 한다.

 

시스템 생성과 시스템 사용을 분리하는 한 가지 방법으로, 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다. 애플리케이션은 그저 객체를 사용할 뿐이다.

 

팩토리 - 때로는 객체가 생성되는 시점을 애플리케이션이 결정할 필요도 생긴다. 이때는 ABSTRACT FACTORY 패턴을 사용한다.

 

의존성 주입

  • 의존성 주입은 제어 역전(IoC) 기법을 의존성 관리에 적용한 매커니즘이다.
  • ☆ 의존성을 역전시킨 객체지향 구조에서는 반대로 프레임워크가 애플리케이션에 속하는 서브클래스의 메서드를 호출한다. 따라서 프레임워크를 사용할 경우 개별 애플리케이션에서 프레임워크로 제어 흐름의 주체가 이동한다. 즉, 의존성을 역전시키면 제어 흐름의 주체 역시 역전된다. 이를 제어 역전(Inversion of Control) 원리, 또는 할리우드(Hollywood) 원리라고 한다. (오브젝트 책 내용)

 

'처음부터 올바르게' 시스템을 만들 수 있다는 믿음은 미신이다.

  • 우리는 오늘 주어진 사용자 스토리에 맞춰 시스템을 구현해야 한다.
  • 내일은 새로운 스토리에 맞춰 시스템을 조정하고 확장하면 된다.

 

의사 결정을 최적화하라 - 아주 큰 시스템에서는 한 사람이 모든 결정을 내리기 어렵다. 가장 적합한 사람에게 책임을 맡기면 가장 좋다.

 

표준을 사용하면 아이디어와 컴포넌트를 재사용하기 쉽고, 적절한 경험을 가진 사람을 구하기 쉬우며, 좋은 아이디어를 캡슐화하기 쉽고, 컴포넌트를 엮기 쉽다. 하지만 때로는 표준을 만드는 시간이 너무 오래 걸려 업계가 기다리지 못한다. 어떤 표준은 원래 표준을 제정한 목적을 잊어버리기도 한다. -> 명백한 가치가 있을 때 표준을 현명하게 사용하라.

 

시스템을 설계하든 개별 모듈을 설계하든, 실제로 돌아가는 가장 단순한 수단을 사용해야 한다.

 

댓글