Do Don't

Arakene·2024년 5월 7일

Component Purpose

composable한개는 하나의 목적만 가질 수 있도록

Modifier

view를 리턴하는 컴포저블은 반드시 modifier를 함수인자로 가지고 있어야하며 루트에서 사용되어야함

Component Name

도메인이나 모듈단의 이름을 사용하는것은 피해야함
ex - GoogleButton, WearButton
추가로 Basic키워드가 들어간 경우 BasicTextField처럼 아주 기본적인 기능의 토대가 되어야함

Explict vs implicit

Explicit inputs은 해당 컴포넌트가 어떤 일을하는지 파악하기 쉬우며, 테스트하기에도, 사용하기에도 편안함
CompositionLocal이나 이와 비슷한 것들은 컴포넌트 내부에 선언하지 않도록 해야함
이러한 인풋들은 컴포넌트를 복잡하게 만들고 커스텀할 경우 트래깅하기 힘들어짐

Component parameters

  • Nullable값은 피할 것

  • Modifier로 해결가능한 부분에 대해서 추가적인 함수 파라미터로 추가하지 말것

Don't
@Composable
fun Image(
    bitmap: ImageBitmap,
    // not core functionality, click can be added via Modifier.clickable
    onClick: () -> Unit = {},
    modifier: Modifier = Modifier,
    // can be specified via `Modifier.clip(CircleShape)`
    clipToCircle: Boolean = false
)
DO
@Composable
fun Button(
    onClick: () -> Unit,
    // modifier param specified so that width, padding etc can be added
    modifier: Modifier = Modifier,
    // button is a colored rect that clicks, so background
    // considered as a core functionality, OK as a param
    backgroundColor: Color = MaterialTheme.colors.primary
)

순서

  1. 필수값들
  2. optional 값들
    2-1. modifier는 optional값들 중에서 가장 먼저 와야함
  3. Trailing @Composable lambda

MutableState를 넘기지 말것

  • 값을 가져오는 변수
    • T --> 자주 값이 변하지 않는 친구, 컴포지션 단계에서 바로 불려야하는 친구, 값이 변경될 때 리컴포지션 호출됨
    • () -> T --> get.invoke()가 호출될 때 값을 가져옴, 컴포지션 state중 필요한 구간에서만 값을 갱신해줄 수 있어 성능에서 이득을 볼 수 있음
  • Setter 변수
    이렇게 두가지를 대신 추가해서 사용할 것

State를 넘기지 말것

위에서 설명한 것 처럼 값을 가져오는 방법을 사용할 것

Slot Api

슬롯에 들어갈 UI 전체를 넘길 것
TextString만 넘기지말고

Slot with Lifecycle?

remember 과 movableContent를 사용하면 된다고하는데 정확한 의미 파악중

profile
안녕하세요 삽질하는걸 좋아하는 4년차 안드로이드 개발자입니다.

0개의 댓글