728x90
- 코드에서 아규먼트의 의미가 명확하지 않는 경우가 있다. 예를들어 다음과 같은 코드이다.
val text = (1..10).joinToString { "|" }
- "|" 가 무엇을 의미하는지는 joinToString 대해서 이미 알고 있다면 이것이 구분자(separator) 를 의미한다는 것을 알 것이다.
- 하지만 모른다면 접두사로 생각할 수도있을것이다. 명확하지 않는 경우 이를 직접 지정해서 명확하게 만들어 줄 수 있다
val text2 = (1..10).joinToString(separator = "|")
또는
val seperator = "|"
val text3 = (1..10).joinToString(seperator)
또는
val test4 = (1..10).joinToString(separator = seperator)
- 다음과 같은 경우에는 더 추천한다
- 디폴트 아규먼트의 경우
- 같은 타입의 파라미터가 많은 경우
- 함수 타입의 파라미터가 있는 경우(마지막 경우 제외)
// 디폴트 아규먼트의 경우
fun greet(message: String, isLoud: Boolean = false) {
if (isLoud) {
println(message.uppercase(Locale.getDefault()))
} else {
println(message)
}
}
greet(message = "Hello", isLoud = true)
// 같은 타입의 파라미터가 많은경우
fun setUpWindow(title: String, width: Int, height: Int) {
println("Setting up window: $title, Width: $width, Height: $height")
}
setUpWindow(title = "Main Window", width = 800, height = 600)
// 함수 타입의 파라미터
fun performOperation(startMessage: String, operation: () -> Unit) {
println(startMessage)
operation()
}
@Test
fun `함수 타입의 파라미터`() {
performOperation(startMessage = "Starting operation...") {
greet(message = "Hello, World!", isLoud = true)
}
}
// Starting operation...
// HELLO, WORLD!
생각:
- 확실히 아규먼트가 많을때는 명확하게 붙여주는게 더 좋은거 같고, 위에 나와있듯이
- 디폴트 아규먼트의 경우
- 같은 타입의 파라미터가 많은 경우
- 함수 타입의 파라미터가 있는 경우(마지막 경우 제외)
- 위의 경우일경우에는 붙여주는게 좋은거 같다.
728x90
'공부 > 이펙티브코틀린' 카테고리의 다른 글
아이템 19 - knowledge 를 반복하여 사용하지 말라 (0) | 2024.04.16 |
---|---|
아이템 18 - 코딩 컨벤션을 지켜라 (0) | 2024.04.11 |
아이템 16 - 프로퍼티는 동작이 아니라 상태를 나타내야 한다 (0) | 2024.04.08 |
아이템 15 - 리시버를 명시적으로 참조하라 (0) | 2024.04.07 |
아이템 14 - 변수 타입이 명확하지 않는 경우 확실하게 지정하라 (0) | 2024.04.07 |
댓글