• Home
  • About
    • Goeun Kim photo

      Goeun Kim

      deep learning, python, c++, etc.

    • Learn More
    • Email
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags

[클린 코드 리뷰] 시스템 11장

24 Mar 2021

Reading time ~1 minute

로버트 C.마틴의 클린 코드를 읽고 정리한 포스트입니다.

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

  • Main 분리
    • 시스템 생성과 시스템 사용을 분리하는 방법
    • 생성과 관련한 코드는 모두 main이나 main이 호출하는 모듈로 옮기고, 나머지 시스템은 모든 객체가 생성되었고 모든 의존성이 연결되었다고 가정한다
    • main 함수에서 시스템에 필요한 객체를 생성한 후 이를 애플리케이션에 넘긴다
    • 애플리케이션은 그저 객체를 사용한다
    • 애플리케이션은 main이나 객체가 생성되는 과정을 전혀 모른다
      • 단지 모든 객체가 적절히 생성되었다고 가정한다
  • 팩토리
    • 객체가 생성되는 시점을 애플리케이션이 결정해야 할 때 사용
    • ABSTRACT FACTORY 패턴을 사용한다
    • 추상 팩토리 패턴 ( Abstract Factory Pattern )
  • 의존성 주입
    • 내부가 아니라 외부에서 객체를 생성해서 넣어주는 것
    • 재사용성을 높여줌
    • 테스트에 용이
    • 코드 단순화
    • 종속적이던 코드의 수도 줄여줌
    • 왜 사용하는 지 파악하기가 수월, 코드를 읽기 쉬워짐
    • 종속성이 감소. 구성 요소의 종속성이 감소하면, 변경에 민감하지 않게 됨
    • 결합도(coupling)는 낮추면서 유연성과 확장성은 향상시킬 수 있음
    • 객체간의 의존관계를 설정할 수 있음
    • 객체간의 의존관계를 없애거나 줄일 수 있음
    • 참고
      • [DI] Dependency Injection이란 무엇일까?
      • [DI] Dependency Injection 이란?
  • 확장
    • TDD, 리팩터링, 깨끗한 코드는 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만든다
  • 횡단(cross-cuttin) 관심사
    • 실제 핵심 로직을 수행하는 Method에서 아무리 설계를 잘하더라도 분리된 모듈로 작성하기 힘든 부분이 발생하는데, 이를 횡단 관심사라 한다
  • AOP(Aspect Oriented Programming)
    • 횡단 관심사를 한데 모아 처리
    • 참고
      • AOP(Aspect Oriented Programming) 란?

Previous

‘[클린 코드 리뷰] 클래스 10장’ -> Previous

Next

‘[클린 코드 리뷰] 창발성 12장’ -> Next



CLEAN CODE Share Tweet +1