[Effective Kotlin] 아이템 26. 함수 내부의 추상화 레벨을 통일하라

Jimin Lim·2023년 8월 13일
0

Effective Kotlin

목록 보기
26/39
post-thumbnail

아이템 26

함수 내부의 추상화 레벨을 통일하라

추상화 레벨 통일

  • 추상화 레벨 통일: 함수도 높은 레벨과 낮은 레벨을 구분해서 사용해야 한다는 원칙

버튼 하나만 누르면 커피를 만들 수 있는 커피 머신을 나타내는 CoffeeMachine 클래스를 만든다고 하자.

//Before
class CoffeeMachine {

    fun makeCoffee() {
        // 수백 개의 변수 선언
        // 복잡한 로직 처리
        // 낮은 수준의 최적화 진행
    }
}

위 코드처럼 모든 것을 이 레벨에서 하다보면 코드를 이해하고 수정하는데에 어려울 것이다.

class CoffeeMachine {

    fun makeCoffee() {
      boilWater()
      brewCoffee()
      pourCoffee()
      pourMilk()  
    }

    private fun boilWater() {
        //
    }
    
    private fun brewCoffee() {
        //
    }
    
    private fun pourCoffee() {
        //
    }
    
    private fun pourMilk() {
    	//
    }
   
}

따라서 낮은 레벨 (boilWater, brewCoffee ...)로 분리해 가독성을 향상시킬 수 있고 테스트도 쉬워진다. 함수를 작고, 최소한의 책임만 가지도록 추상화하도록 하자.

프로그램 아키텍처의 추상 레벨

추상화 계층이라는 개념은 함수보다 높은 레벨에서 적용할 수 있다.

모듈을 분리하면 계층 고유의 요소를 숨길 수 있다.

  • 입력, 출력을 나타내는 모듈(백엔드 HTTP): 낮은 레벨의 모듈
  • 비즈니스 로직: 높은 레벨의 모듈

정리

별도의 추상화 계층을 만든다면 다음과 같은 이점이 존재한다.

  • knowledge를 체계화한다
  • 서비시스템의 세부 사항을 숨겨 상호 운영성, 플랫폼 독립성을 얻게 한다.

추상화 레벨은 구체적인 동작, 프로세서, 입출력과 가까울수록 낮은 레벨이다.

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

0개의 댓글