시스템

Sshu Sshu·2022년 8월 24일
0

CleanCode

목록 보기
10/12
post-thumbnail

컴퓨터 과학에서 추상화 (abstraction)는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.

깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다.
시스템 수준(높은 추상화 수준)에서도 깨끗함을 유지하는 방법을 살펴보자.

시스템 제작과 시스템 사용을 분리하라

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

시작 단계를 분리해야 한다.
설정 논리는 일반 실행 논리와 분리해야 모듈성이 높아진다.

  • Main 분리
    생성과 관련 코드는 모두 main으로 옮긴다.
    애플리케이션은 그저 객체를 사용할 뿐 생성 과정을 전혀 모른다.

  • 팩토리

  • 의존성 주입

확장

처음부터 올바르게 시스템을 만들 수 있다는 믿음은 미신이다.
테스트 주도 개발, 리팩터링, 깨끗한 코드는 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만든다.
관심사를 적절히 분리해 관리한다면 소프트웨어 아키텍처는 점진적으로 발전할 수 있다.

의사 결정을 최적화하라

최대한 정보를 모아 최선의 결정을 내리기 위해 가능한 마지막 순간까지 결정을 미뤄야한다.

명백한 가치가 있을 때 표준을 현명하게 사용하라

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

결론

시스템 역시 깨끗해야 한다.
깨끗하지 못한 아키텍처는 도메인 논리를 흐리며 기민성을 떨어뜨린다.
모든 추상화 단계에서 의도는 명확히 표현해야 한다.
시스템을 설계하든 개별 모듈을 설계하든, 실제로 돌아가는 가장 단순한 수단을 사용해야 한다는 사실을 명심하자.

profile
Front-End Developer

0개의 댓글