• Blog

  • Snippets

계층형 설계2

May 26, 2024

쏙쏙들어오는 함수형 코딩


이미 앞 챕터에서 직접구현을 설명했으니, 이번 챕터에선 3가지 패턴을 설명하도록 하겠음.



# 추상화 벽

추상화 벽이란 세부 구현을 감춘 함수로 이루어진 계층을 말함.

image-01.png


추상화벽이라고함은 벽 위에 있는 계층에서 추상화벽보다 하위계층에 있는 함수로 연결된 화살표가 없는것도 의미함.

추상화 벽은 언제 사용하면 좋을까?

쉽게 구현을 바꾸기 위해
구현을 간접적으로 사용 할 수 있기때문에 나중에 구현을 바꾸기 쉬움 (간접적으로 사용한다는것은 함수의 구현부는 신경쓰지않고 사용만 한다는 의미같음)

코드를 읽고 쓰고 쉽게 만들기 위해
추상화벽을 사용하면 함수의 세부적인 코드를 신경쓰지 않아도 코드를 만들 수 있음.

팀 간에 조율해야 할 것을 줄이기 위해
추상화벽을 사용하고 있는 상황에서 함수에 문제가 생겼을때 어느 팀에서 만든 함수가 문제인지 명확히 알 수 있음.

주어진 문제에 집중하기 위해
구체적인 부분을 제외하고 중요한 부분만 볼 수 있기 때문에 코드에서 발생하는 문제를 파악할때 쉽게 문제를 파악 할 수 있음.

추상화벽의 궁극적인 목표는?

팀 간에 커뮤니케이션 비용을 줄이고, 복잡한 코드를 명확하게 하기 위해 전략적으로 사용해야함

# 작은 인터페이스

작은 인터페이스는 새로운 코드를 추가할 위치에 관한것임. 인터페이스를 최소화하면 하위 계층에 불필요한 기능이 쓸데없이 커지는 것을 막을 수 있음.(인터페이스를 최소화 한다는것은 추상화벽에 함수를 최소한으로 만든다는 소리임)

새로 만든 액션을 어디에 위치 시키는것이 좋을까?

장바구니에 많은 상품을 담은 사람이 시계를 구입하면 10% 할인해주는 함수를 만들고 어디에 위시키면 좋을까?

image-02.png

구현하려는 함수는 추상화벽에 있는 함수로 구성가능하기에 추상화벽 위에 만드느것이 좋음. 이렇게 하면 쓸데없이 코드를 만들지 않아도 되서 좋고, 개발팀에 따로 문의하지않고 함수를 만들 수 있다는 장점이 있음.

작은 인터페이스를 실천하는 방법은 가능한 현재 계층에 있는 함수로 새로운 함수를 구성하는것임.

# 편리한 계층

커다랗고 완벽한 추상화 계층을 만들면 뿌듯할것임. 하지만 시간이 지나면 열심히 만든 추상화벽이 도움이 되지 않을 수 있음.

또 비즈니스 문제를 해결하기위해 이처럼 거대한 추상계층을 만들 시간적 여유가 없을 수 있음.

그래서 현실에 맞게 만들 수 있을만큼 추상계층을 만들고, 자기가 코드를 사용하는데 편하다면 멈춰도 됨.

# 호출 그래프로 알 수 있는 비기능적 요구사항


# 정리