ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20장 - 업무 규칙
    클린 코드(Clean Code)/클린 아키텍처요약 2023. 1. 12. 00:01
    728x90

    업무 규칙이란?

    사업적으로 수익을 얻거나 비용을 줄일 수 있는 규칙 또는 절차입니다.

    컴퓨터상으로 구현되었는지, 사람이 수동으로 직접 하는 것과는 연관이 없습니다.

     

    보통 업무규칙은 데이터를 요구하며 이러한 데이터를 핵심 업무 데이터라 부릅니다.

    핵심 규칙과 핵심 데이터는 본질적으로 결합되어 있기 때문에 객체로 만들 좋은 후보가 되며 이러한 유형을 엔티티라고 합니다.

     

    엔티티

    JPA등의 프레임워크를 다루며 엔티티는 친숙한 용어입니다.

    예를 들어 대출을 뜻하는 Loan 엔티티는 다음과 같습니다

     

    Loan 엔티티는 핵심 업무 데이터를 포함합니다.

    - 이율

    - 기간

    - 원칙

     

    Loan 엔티티는 세 가지 핵심 업무 규칙을 인터페이스로 제공합니다.

    - makePayment

    - applyInterest

    - chargeLateFee

     

    업무에서 핵심적인 개념을 구현하는 소프트웨어를 한데 모읍니다.

    이 클래스는 데이터베이스, 사용자 인터페이스, 서드파티 프레임워크에 대한 고려사항들로 인해 오염되어서는 절대 안 됩니다.

     

    여기에서 가장 중요한 것은 핵심 업무 데이터와 핵심 업무 규칙을 하나로 묶어 별도의 소프트웨어 모듈로 만들어야 한다는 것입니다.

     

    유스케이스

    유스케이스는 자동화된 시스템이 사용되는 방법을 설명하며 아래와 같은 단계를 기술합니다.

     

    - 사용자가 제공해야 하는 입력

    - 사용자에게 보여줄 출력

    - 해당 출력을 생성하기 위해 처리 단계

     

    유스케이스만 보고서는 웹인지 콘솔 기반인지 구분할 수 없습니다.

     

    엔티티와 유스케이스

    엔티티는 자신을 제어하는 유스케이스에 대해 아무것도 알지 못합니다.

    엔티티와 같은 고수준 개념은 유스케이스와 같은 저수준 개념에 대해 아무것도 알지 못합니다.

     

    유스케이스는 단일 애플리케이션에 특화되어 있습니다.

    반대로 엔티티는 수많은 다양한 애플리케이션에서 사용될 수 있도록 일반화되어 있습니다.

     

     

    유스케이스와 요청 및 응답

    유스케이스는 입력 데이터를 받아 출력 데이터를 생성합니다.

    이때 제대로 구성된 유스케이스 객체라면 데이터를 사용할 때 HTML과 SQL에 대해 알게 되는 일을 절대로 원치 않습니다.

     

    엔티티 객체의 의존성을 잘 제거하는 일은 매우 중요합니다.

    또한 요청과 응답이 비슷해 보일지라도 단일 책임 원칙을 위해서는 두 객체를 분리해야 합니다.

     

    결론

    업무 규칙을 표현하는 코드는 반드시 시스템의 심장부에 위치해야 합니다.

    또한 사용자 인터페이스나 데이터베이스와 같은 저수준의 관심사로 인해 오염되어서는 안 됩니다.

     

    '클린 코드(Clean Code) > 클린 아키텍처요약' 카테고리의 다른 글

    22장 - 클린 아키텍처  (0) 2023.01.14
    21장 - 소리치는 아키텍처  (0) 2023.01.13
    19장 - 정책과 수준  (0) 2023.01.02
    18장 - 경계 해부학  (0) 2023.01.01
    17장 - 경계: 선 긋기  (0) 2022.12.30

    댓글

Designed by Tistory.