🚀 94sssh
Published on

2024.01.30

[함수형 코딩] - 09. 계층형 설계 Ⅱ

계층형 설계 패턴

패턴 2: 추상화 벽
추상화 벽은 세부 구현을 감춘 함수로 이루어진 계층이다.
데이터 구조를 몰라도 함수를 사용할 수 있다는 것을 의미한다.
세부적인 구현은 신경쓰지 않는다!
추상화 벽 위의 코드는 데이터 구조와 같은 구체적인 내용을 몰라도 된다.
추상화 벽과 그 아래의 코드는 높은 수준의 계층에서 함수가 어떻게 사용되는지 몰라도 된다.

추상화! 내가 매우 관심이 있었던 점을 다루어 좋았다.
사실 추상화라는 단어는 공부를 하거나 글을 읽다보면 굉장히 많이 쓰이는 데에 비해 내가 용어의 정확한 의미를 파악하지 않고 받아들이고 있었다. 언제 한 번 잘 모르는 용어를 정리하고자 블로그에 글도 썼는데 정리도 안하고 있었다.. 마침 추상화에 대한 정리가 나와있어서 좋았다. 이제 좀 더 명확히 뜻을 알고 사용할 수 있을 것 같다.

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

1. 쉽게 구현을 바꾸기 위해
api가 준비되지 않은 경우, 그러나 불필요한 대비가 될 수도 있다.

2. 코드를 읽고 쓰기 쉽게 만들기 위해
세부적인 것을 신경 쓰지 않아도 된다.

3. 팀 간에 조율해야 할 것을 줄이기 위해
4. 주어진 문제에 집중하기 위해

패턴 3: 작은 인터페이스
인터페이스 = 추상화 벽에 만든 함수

추상화 벽을 작게 만들어야 하는 이유

  1. 추상화 벽에 코드가 많을수록 고쳐야 할 것이 많아진다.
  2. 추상화 벽의 코드는 낮은 수준의 코드이므로 더 많은 버그가 있을 수 있다.
  3. 낮은 수준의 코드는 이해하기 더 어렵다.
  4. 추상화 벽에 코드가 많을수록 팀 간 조율할 것이 많아진다.
  5. 추상화 벽에 인터페이스가 많으면 알아야 하는 것이 많아져 사용이 어렵다.

상위 계층에 함수를 만든다면 가능한 현재 계층의 함수로 구현하는 것이 작은 인터페이스를 실천하는 방법.

패턴 4: 편리한 계층

추상화 계층이 높다, 추상화 벽을 높게 쌓는다. 등의 표현이 약간 와닿지가 않는다. 계층형 설계 시에 여러 계층에 걸쳐 추상화 벽을 만든다는 얘기인가..

그래프로 알 수 있는 코드에 대한 정보

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

  1. 유지보수성
    자주 바뀌는 코드는 가능한 위쪽에
    그래프의 가장 위에 있는 코드가 고치기 가장 쉽다.
    함수는 그래프 위에서 멀어질수록 고치기 어렵다.

  2. 테스트성
    아래쪽에 있는 함수를 테스트하는 것이 위쪽에 있는 함수를 테스트하는 것보다 가치 있다.
    아래에 있는 코드는 테스트가 중요하다.
    아래에 있는 코드보다 가장 위에 있는 코드가 자주 바뀌므로, 하위 계층 코드를 테스트해 안정적인 코드를 만들면 자주 고칠 필요가 없다.

  3. 재사용성
    낮은 수준의 단계로 함수를 빼내면 재사용성이 더 높아진다.
    아래에 있는 코드가 재사용하기 더 좋다.
    아래쪽으로 가리키는 화살표가 많은 함수는 재사용하기 어렵다.

이번에는 그래프 등 시각적인 자료를 통해 계층과 추상화 벽 등에 대해 많은 내용을 배웠지만, 실무에서 실제로 적용하기에는 어려움이 있지 않을까 싶었다. 그래도 확실히 코드의 계층과 관계를 파악할 수 있는 점과, 그걸 토대로 어떻게 분리하거나 어떻게 추상화할 지 알려준 점은 좋았다.