Skip to content

Coding Detail Convention

Dongmin Park edited this page Jun 18, 2024 · 3 revisions

Scope 함수 잘 쓰기!

Intent(this, ListActivity::class.java).apply {
    putExtra(EXTRA_CATEGORY, viewModel.categoryId)
    startActivity(this)
}
finish()

여러 스코프 함수들의 차이점을 알고 적절하게 사용하기

엘비스 연산자 활용하기

!! 는 안됩니다!! 코드에서 보이면 뿅망치 두대 때릴거에요

?:를 쓰기~

함수화 잘하기

꼭꼭!!!

LaunchedEffect 이해하고 쓰기

정말정말 중요한 친구입니다!!!

상황에 맞게 용도에 맞게 잘 쓰길 바래용

필요한 상황에서는 꼭 StateHoisting하기

재활용하기 위한 기초입니다!! 확장성을 챙겨줘요

파라미터가 명세서!!!! 라고 생각…. 확실하진 않아요….. 전 그렇게 생각해요….

@Composable
fun RankingScreen(
    isCurrent: Boolean,
    type: String,
		rankingListUiModel: RankingListUiModel,
    nickname: String,
    refreshing: Boolean = false,
    onRefresh: () -> Unit = {},
    onClickBack: () -> Unit = {},
    onClickUser: (RankerNavArg) -> Unit = {}
) {...}

컴포넌트화에 미쳐있기

Compose의 최대 장점은 컴포넌트화라고 생각합니다!!

해당 모든 화면은 그 화면에서 다 구현하는 것이 아니라 컴포넌트의 모음입니다!!

꼭 통짜로 UI를 만들지 말고 컴포넌트로 만들어버립시다 🙂

여러 피쳐에서 공통으로 쓰는건 core-designsystem 에 모아두고,

한 피쳐에서 여러번 쓰는건 피쳐 내부 component에 모아두고,

해당 화면에만 쓰는건 밑으로 쭉쭉 놔둬도 돼용~

Preview는 무조건 만들기

자신이 만든 컴포넌트가 아니라면 다른 사람은 이해하기 힘들어요!!

무조건 Preview를 만들어 어떻게 사용되는지 볼 수 있게 해줍시다

List → ImmutableList!

List는 리컴포지션의 대상이 됩니다.

ImmutableList를 활용해봐용

Compose 파라미터 선언 방식 지키기

Link 참고해주세용

리플렉션 사용하기

더블콜론(::)을 사용해봅시다!

람다 함수도 리컴포지션의 대상입니다 :)

// bad
onRefresh = { partRankingViewModel.onRefresh() },
onClickBack = { resultNavigator.navigateBack() },

// good
onRefresh = partRankingViewModel::onRefresh,
onClickBack = resultNavigator::navigateBack,

Log 사용 금지!!

물론 개발시에는 써도 돼요. 하지만, 릴리즈에선 포함되어있으면 안돼요.

그렇기 때문에 develop 브랜치에 합쳐져선 안되겠죠??

PR을 올릴때는 다 지워주세요 :)

아 물론 계속해서 확인해야하는 데이터는 Timber로 나타내면 됩니다!!

ex) 서버 통신 결과

Debug모드에서만 보이고 Release에서 안보이게 작동하도록 설정해둘거에용