https://dagger.dev/hilt/benefits


2. Benefit

왜 Hilt를 사용해야 할까?

  • 보일러플레이트 코드 감소
  • 분리된 빌드 의존성
  • 환경 설정의 간소화
  • 개선된 테스트 환경
  • 표준화된 컴포넌트들

보일러 플레이트 코드 감소

Hilt의 목표는 개발자가 Dagger 설정에 대해 걱정할 필요 없이 Dagger 바인딩 정의 및 사용법에 집중할 수 있도록하는 것이다. 즉, 모듈 및 인터페이스 목록을 사용하여 컴포넌트 정의, 생명주기의 올바른 지점에서 컴포넌트를 작성 및 유지하는 코드, 상위 컴포넌트를 가져 오기 위한 인터페이스 및 캐스팅 등을 숨긴다.

Hilt가 단순해지는 몇가지 이유중 하나가 바로 단일 컴포넌트를 사용한다는 것이다. Hilt는 본질적으로 전역 바인딩 네임 스페이스를 장려하여 어떤 Activity나 Fragment를 주입했는지 추적하지 않고도 사용되는 바인딩 정의를 쉽게 알 수 있다.

분리된 빌드 의존성

만약 전문적 지식이 없는 상태에서 Dagger 컴포넌트를 직접적으로 참조하는 경우에는 여러가지 빌드 오류 접하게 된다. 이러한 문제들은 Dagger 컴포넌트가 설치된 모든 모듈을 직접적으로 참조하고 있기 때문에 발생 한다. 이런 점은 비대한 종속성으로 이어지고, 빌드 속도가 느려지는 원인이 된다. 이를 해결하는 자연스러운 방법은 인터페이스와 안전하지 않은 캐스팅(unsafe cast)이 있다. 런타임 오류가 발생할 수 있기 때문에 이는 선택적으로 절충해야 한다. 예를 들어, 새로운 인젝터 인터페이스를 도입하면 직접 컴포넌트에 의존하는 것을 피할 수 있지만 컴포넌트를 인젝터 인터페이스로 확장하지 않으면 캐스트 예외(cast exception)가 발생한다.

인터페이스, 안전하지 않은 캐스팅 그리고 모듈/인터페이스 목록에 대한 코드를 내부적으로 생성하기 때문에 Hilt는 런타임에 안전하지 않은 캐스팅을 안전하게 만들 수 있는데 그 이유는 코드 생성과 모듈/진입점 발견을 보장 하기 때문이다.

환경 설정 간소화

앱에는 종종 다른 기능을 가진 프로덕션 또는 개발 빌드와 같이 다른 빌드 구성이 있다. 이러한 다른 기능 세트는 종종 다른 Dagger 모듈 세트를 의미한다. 일반적인 Dagger 빌드에서 다른 모듈 세트에는 일반적으로 많은 부분이 반복되는 모든 스코프에 대해 분리된 컴포넌트 트리가 필요하다. Hilt는 빌드 종속성을 통해 모듈을 설치하고 컴포넌트 코드를 생성하므로, 다른 build flavor를 생성하는 것은 추가된 또는 제거된 의존성으로 컴파일 하는 것만큼 간단하다.

개선된 테스트 환경

Dagger를 테스트하는 것은 위에서 언급한 환경설정 문제 때문에 어려울 수 있다. 마찬가지로, Hilt는 컴포넌트 코드 생성으로 인해 테스트 모듈과 바인딩을 쉽게 변경할 수 있다. Hilt는 모듈을 관리하고 테스트 바인딩을 제공하여 테스트에서 Dagger를 사용할 수 있도록 특정 테스트 유틸리티를 내장하고 있다. 테스트에서 Dagger를 사용하면 테스트에서 보일러플레이트 코드를 줄이고 프로덕션에서 인스턴스화 되는 것과 같은 방식으로 코드를 인스턴스화 함으로써 테스트를 더욱 탄탄하게 만든다.

표준화된 컴포넌트들

Hilt는 컴포넌트 계층을 표준화한다. 즉, Hilt와 통합된 라이브러리도 표준화된 컴포넌트에 쉽게 바인딩을 추가하거나 소비할 수 있게 된다. 이를 통해 Hilt를 사용한 앱에 깔끔하고 간단하게 더 복잡한 라이브러리를 구축 할 수 있다.

Buy me a coffeeBuy me a coffee
카테고리: AndroidDagger2

0개의 댓글

답글 남기기

이메일은 공개되지 않습니다.