함수형 코딩 계층형 설계2

쏙쏙 들어오는 함수형 코딩

Chapter 9 : 계층형 설계 2

패턴 1 : 직접 구현

직접 구현은 계층형 설계 구조를 만드는 데 도움이 됨

패턴 2 : 추상화 벽

호출 그래프에 어떤 계층은 중요한 세부 구현을 감추고 인터페이스를 제공한다. 인터페이스를 사용하여 코드를 만들면 높은 차원으로 생각할 수 있다. 팀 간 책임을 명확하게 나눈다.

추상화 벽이란?

세부 구현을 감춘 함수로 이루어진 계층이다. 데이터 구조, 구현을 전혀 몰라도 함수를 쓸 수 있다.

추상화 벽이 주는 이점은?

세부 구현을 신경쓰지 않아도 되기 때문에 추상화 벽을 개발하는 팀이나 사용하는 팀이 서로 독립적으로 일할 수 있다. 흔히 사용하는 라이브러리나 API와 비슷하다.

완전하지 않은 추상화 벽은 무엇이고 이를 어떻게 해결하는가?

완전하지 않은 추상화 벽은 신경쓰지 않아야 할 세부적인 구현을 사용하고 있는 것이다. 완전하지 않은 추상화 벽을 완전한 추상화 벽으로 만드는 방법은 추상화 벽에 새로운 함수를 만드는 것이다.

추상화 벽은 언제 사용하는 것이 좋은가요?

  1. 쉽게 구현을 바꾸기 위해
    • 구현에 대한 확신이 없는 경우 추상화 벽을 사용하면 구현을 간접적으로 사용할 수 있기 때문에 나중에 구현을 바꾸기 쉽다. 최선의 구현을 확신할 수 없는 작업에 유용하다.
    • 오지 않을 수도 있는 미래를 위해 불필요한 코드를 작성하는 것은 좋지 않은 습관이다.
  2. 코드를 읽고 쓰기 쉽게 만들기 위해
    • 세부적인 것은 신경 쓰지 않고 쉽게 코드를 만들 수 있다.
    • 적절한 것을 감추면 숙련된 프로그래머가 아니라도 더 생산적인 코드를 만들 수 있다.
  3. 팀 간에 조율해야 할 것을 조율하기 위해
    • 각 팀에 관한 구체적인 내용을 서로 신경 쓰지 않아도 일할 수 있다. 더 빠르게 일할 수 있다.
  4. 주어진 문제에 집중하기 위해
    • 문제를 해결하기 더 쉽다.
    • 문제의 구체적인 부분을 무시할 수 있다. 그렇기에 코드에 실수를 줄이고, 만들면서 지치지 않을 수 있다.

추상화는 어떻게 동작하나요?

추상화 단계의 상위에 있는 코드와 하위에 있는 코드는 서로 의존하지 않게 정의한다. 추상화 단계의 모든 함수는 비슷한 세부 사항을 무시할 수 있도록 정의한다. 추상화 벽으로 추상화를 강력하고 명시적으로 만들 수 있다.

패턴 3 : 작은 인터페이스

시스템이 커질수록 비즈니스 개념을 나타내는 중요한 인터페이스는 작고 강력한 동작으로 구성하는 것이 좋다. 다른 동작도 직간접적으로 최소한의 인터페이스를 유지하면서 정의해야 한다.

작은 인터페이스란 무엇인가요?

새로운 코드를 추가할 위치에 관한 것이다. 인터페이스를 최소화하면 하위 계층에 불필요한 기능이 쓸데없이 커지는 것을 막을 수 있다.

작은 인터페이스 패턴은 무엇인가요?

새로운 기능을 만들 때 하위 계층에 기능을 추가하거나 고치는 것보다 상위 계층에 만드는 것이 작은 인터페이스 패턴이라고 할 수 있다. 작은 인터페이스 패턴을 사용하면 하위 계층을 고치지 않고 상위 계층에서 문제를 해결할 수 있다.

패턴 4 : 편리한 계층

조금 더 현실적이고 실용적인 측면이다. 언제 패턴을 적용하고 또 언제 멈춰야 하는지 실용적인 방법을 알려준다. 개발자의 요구를 만족시키면서 비즈니스 문제를 잘 풀 수 있어야 한다. 소프트웨어를 더 빠르고 고품질로 제공하는 데 도움이 되는 계층에 시간을 투자해야 한다.

기능적 요구사항은 무엇인가요?

소프트웨어가 정확히 해야 하는 일을 말한다 .

비기능적 요구사항은 무엇인가요?

  1. 유지보수성: 요구 사항이 바뀌었을 때 가장 쉽게 고칠 수 있는 코드는 어떤 코드인지?
  2. 테스트성: 어떤 것을 테스트하는 것이 가장 중요한지?
  3. 재사용성: 어떤 함수가 재사용하기 좋은지?

어떤 코드가 가장 고치기 쉬울까?

호출 그래프에서 가장 위에 있는 코드가 고치기 쉽다. 아무 곳에서도 호출하는 곳이 없기 때문에 바꿀 때 고민하지 않아도 된다. 가장 아래에 있는 코드는 이 코드 위에 너무 많은 코드를 만들었기 때문에 고치기 힘들다. 따라서 자주 바뀌는 코드는 위에 자주 바뀌지 않는 코드는 아래에 두어 유지보수 비용을 많이 줄일 수 있다.

어떤 코드가 테스트하기 쉬울까?

아래에 있는 함수가 테스트하기 쉽다. 자주 변경되지 않기 때문에 테스트 코드도 자주 고칠 필요가 없다.

하위 계층으로 코드를 추출하거나 상위 계층에 함수를 만드는 일은 테스트의 가치를 결정한다.

어떤 코드가 재사용하기 더 쉬울까?

코드를 재사용하면 코드를 다시 만들지 않아도 되기 때문에 여러 번 고치거나 테스트하지 않아도 된다. 코드를 재사용하면 시간과 비용을 줄일 수 있다. 낮은 계층은 재사용하기 더 좋다. 아래쪽에 함수가 적을수록 더 재사용하기 좋다.

결론: 계층형 설계란 무엇인가?

함수를 계층형으로 분리함으로써 변경이 용이하고, 테스트하기 쉬우며, 재사용하기 쉬운 코드를 설계 할 수 있게 한다.

results matching ""

    No results matching ""