본문 바로가기
Android/Compose

Compose UI 컴포넌트 설계

by 안스 인민군 2024. 12. 13.

Compose UI 컴포넌트 설계의 중요성

안드로이드 Compose UI 설계는 단순히 화면을 구성하는 것을 넘어 재사용성과 테스트 용이성을 높이고, 잦은 변경 사항에도 유연하게 대처할 수 있는 구조를 만드는 것이 핵심입니다. 컴포넌트를 화면 단위로 설계하는 것과 의미 있는 단위로 분리하는 것 사이에는 큰 차이가 있습니다. 후자의 방식은 유지보수성과 코드의 가독성을 크게 향상시킵니다.

Google의 Compose API 가이드라인에 따르면, 하나의 컴포넌트는 단일 문제를 해결하는 데 초점을 맞춰야 하며, 이를 통해 간결하고 사용하기 쉬운 API 설계를 지원할 수 있습니다. 또한, 선언형 UI의 대표 주자인 React의 설계 원칙과 선언적 컴포넌트 구조에서 배울 점이 많습니다. Compose는 React에 비해 역사가 짧지만, React의 설계 원칙인 함수형 컴포넌트와 아토믹 디자인 등은 Compose에도 충분히 적용 가능합니다.

컴포넌트 설계의 핵심 요소

컴포넌트를 설계할 때 가장 중요한 점은 비즈니스 요구사항의 변화에 쉽게 대응할 수 있도록 설계하는 것입니다. 이를 위해 다음과 같은 설계 원칙을 따라야 합니다.

  1. 재사용 가능성과 독립성
    각 UI를 독립적이고 재사용 가능한 조각으로 나누는 것이 필수적입니다. 공통 요소는 추출하되, 컴포넌트 고유의 속성은 외부에서 주입받아야 합니다.
  2. 복잡성 관리
    컴포넌트 내부에 조건문이 많아지면 후속 변경이 어려워질 수 있습니다. 따라서 불필요한 중복 제거가 오히려 코드 복잡성을 증가시키는 경우가 많으므로 주의해야 합니다.
  3. 스테이트풀 vs 스테이트리스 컴포넌트
    스테이트리스 컴포넌트는 상태를 외부에서 주입받아 관리하는 방식으로 테스트가 용이하며, 스테이트풀 컴포넌트는 상태를 자체적으로 관리해 테스트의 복잡도를 증가시킵니다.
  4. 스테이트 호이스팅
    UI 상태를 최상위 컴포넌트로 옮겨 여러 컴포넌트 간에 공유하면 상태 관리와 테스트가 수월해집니다.

UI 컴포넌트 테스트 방법

테스트 가능한 UI를 설계하려면 다음 접근 방법을 고려해야 합니다:

  1. 컴포넌트 컨트랙트 분석
    컴포넌트의 입력 파라미터, 프리 컨디션, 사이드 이펙트를 명확히 정의하고 이를 중심으로 테스트를 설계해야 합니다.
  2. 스크린샷 테스트
    UI의 시각적 상태를 검증하며, 다양한 해상도와 디바이스 환경에서 UI의 정합성을 확인하는 데 유용합니다.
  3. 스테이트리스 컴포넌트 테스트
    상태를 외부에서 관리하며 콜백을 통해 상태 변경 사항을 처리하는 구조는 테스트 용이성을 극대화합니다.

실무에서의 적용 방법

  1. 단위 테스트 및 UI 검증
    Compose에서 UI 테스트를 작성할 때, 클릭 이벤트로 인해 상태가 변경되는 경우 이를 검증하는 어서션 코드를 작성하는 것이 중요합니다.
  2. 테스트 전략 수립
    모든 시나리오를 테스트하려 하기보다는, 테스트 가치가 낮은 경우 과감히 생략하는 것이 효율적입니다.
  3. 컴포넌트 분리 및 설계 개선
    적절한 단위로 컴포넌트를 분리하면 테스트의 범위가 좁아지고 코드 유지보수성이 증가합니다.

컴포넌트 설계 및 테스트 팁

  1. 결합도 낮추기, 응집도 높이기
    재사용 가능한 설계를 통해 중복을 줄이고 일관성을 유지하는 것이 중요합니다.
  2. 테스트 코드의 역할
    테스트 코드는 단순히 오류를 잡는 것 이상의 역할을 하며, 컴포넌트 사용법과 기대 결과를 명확히 문서화하는 수단으로 활용될 수 있습니다.
  3. 유연성과 유지보수성 확보
    객체지향 및 함수형 프로그래밍 개념을 적용해 유연하고 변경에 강한 설계를 추구해야 합니다.

참고

 

 

 

'Android > Compose' 카테고리의 다른 글

XML 에서 Copose로 전환하면 좋은 이유  (0) 2024.12.13