Skip to content

๐Ÿ“‘ ์ฝ”ํ‹€๋ฆฐ ์ปจ๋ฒค์…˜

๋ฐ•์ฐฌํ˜ธ edited this page Nov 22, 2022 · 8 revisions

Ktlint

https://github.com/JLLeitschuh/ktlint-gradle ์‚ฌ์šฉ

์ ์šฉ์ค‘์ธ .editorconfig

root = true

[*]
charset=utf-8
end_of_line=lf
indent_style=space
indent_size=4
insert_final_newline=false

[*.{kt,kts}]
disabled_rules=no-wildcard-imports,import-ordering,comment-spacing,no-blank-line-before-rbrace

์ฃผ์š” ๋ช…๋ น์–ด

  • ./gradlew ktlintCheck - ๋ชจ๋“  ์ฝ”ํ‹€๋ฆฐ ํŒŒ์ผ๋“ค ์ฒดํฌ
  • ./gradlew ktlintFormat - ๋ชจ๋“  ์ฝ”ํ‹€๋ฆฐ ํŒŒ์ผ๋“ค ์ฝ”๋“œ ์Šคํƒ€์ผ์— ๋งž๊ฒŒ ์ˆ˜์ •
  • ./gradlew addKtlintCheckGitPreCommitHook - staged file๋“ค check
  • ./gradlew addKtlintFormatGitPreCommitHook - staged file๋“ค format
  • rm .git/hooks/pre-commit - git hook ์ œ๊ฑฐ(๋งŒ์•ฝ ๋‹ค๋ฅธ git hookํ•œ๊ฑฐ์žˆ์œผ๋ฉด ๊ฐ™์ด ์—†์–ด์งˆ๋“ฏํ•จ)

ํ”„๋กœํผํ‹ฐ

val addTaskViewModel: AddTaskViewModel by viewModels()
val addTaskAdapter = AddTaskAdapter()

ํด๋ž˜์Šค ๋‚ด๋ถ€ ํ•จ์ˆ˜ ๋ฐฐ์น˜ ์ˆœ์„œ

  • ํ”„๋กœํผํ‹ฐ
  • ์ƒ์„ฑ์ž
  • init
  • override ํ•จ์ˆ˜ (lifecycle ๋“ฑ)
  • public ํ•จ์ˆ˜
  • private ํ•จ์ˆ˜
  • ๋‹ค๋ฅธ class, interface, enum, data class
  • companion object

๊ฐœํ–‰

interface Example {
	//๊ฐœํ–‰
	fun A()

	fun B()

	fun C()
	//๊ฐœํ–‰
}
class Sample() : Example {
	//๊ฐœํ–‰
	private val binding

	fun function()

	companion object {
			
	}
	//๊ฐœํ–‰
}
  • ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด ๋งจ ์œ„์™€ ์•„๋ž˜๋Š” ํ•œ ์ค„์”ฉ ๋„์šด๋‹ค.
  • ํ”„๋กœํผํ‹ฐ๋Š” ๋ถ™์—ฌ์“ฐ๋˜, ์ข…๋ฅ˜๊ฐ€ ๋งŽ์•„์ง€๋ฉด ๊ฐœํ–‰์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

Enum

enum class ProductType {

}
  • [What]Type

Scope ํ•จ์ˆ˜

  • apply, also, with, let, run
    • Scope ํ•จ์ˆ˜ 3๊ฐœ ์ด์ƒ ์ค‘์ฒฉ ์ง€์–‘
    • Scope ํ•จ์ˆ˜ ์ค‘์ฒฉ ์‹œ it ์ง€์–‘

์ƒ์ˆ˜

  • resource -> ํ™”๋ฉด์— ๋ณด์ด๋Š”๊ฐ€๋ฅผ ๊ธฐ์ค€์œผ๋กœ string.xml์— ๋ถ„๋ฆฌ ๊ฒฐ์ • Android intent extra name์€ companion์— const val ์„ ์–ธ
    • ex: EXTRA_TITLE_ID = "title_id" ์ƒ์ˆ˜ ๋„ค์ด๋ฐ์€ upper snake case
  • ์˜๋ฏธ ์žˆ๋Š” ์ˆซ์ž, ๋ฌธ์ž์—ด์€ companion์— const val ์„ ์–ธ
    • ex: LOOP_COUNT = 10

Layer๊ฐ„ ๋งคํ•‘ ๋ฐฉ์‹

๋งคํ•‘ ํ•จ์ˆ˜๋ช…

  • <์ž๋ฃŒํ˜•>.to[์ž๋ฃŒํ˜•]()
fun ProductResoponseBody.toProduct() = Product()

๋งคํ•‘ ์ž‘์—… Layer

  • [DATA]repository: <type>responsebody/entity <-> <type>
  • [VIEW]viewmodel, view : <type> <-> <type>UiState
//repository..
fun <type>ResoponseBody.to<type>() = <type>()
fun <type>.to<type>ResoponseBody() = <type>ResoponseBody()

fun <type>Entity.to<type>() = <type>()
fun <type>.to<type>Entity() = <type>Entity()

//viewmodel or view..
fun <type>UiState.to<type>() = <type>()
fun <type>.to<type>UiState() = <type>UiState()

ํ…Œ์ŠคํŠธ ํ•จ์ˆ˜ ๋„ค์ด๋ฐ

  • <ํ…Œ์ŠคํŠธ ์ด๋ฆ„>_<์ผ€์ด์Šค ์ด๋ฆ„>
fun signUp_DuplicateID()

์ฃผ์„

  • //comment
//comment

์ฐธ๊ณ  : Kotlin style guide | Android Developers

๐ŸŒฑ Project

๐Ÿ“ Dev Story

๐Ÿค Ground Rule

๐Ÿ“‘ Convention

โš™ Setting

๐Ÿ“† Daily Scrum

๐Ÿ’ก Weekly Review

๐Ÿ–ผ ๋ฐœํ‘œ ์ž๋ฃŒ

Clone this wiki locally