보뇨 다이어리

코틀린 디자인 패턴 - 관용구와 안티 패턴 (입력유효성 검사) 본문

컴퓨터 관련/Kotlin 정보

코틀린 디자인 패턴 - 관용구와 안티 패턴 (입력유효성 검사)

보뇨 2024. 12. 18. 13:36
반응형

단순히 if 구문으로도 처리할수있지만 코틀린 철학에 맞게 설계한것들이 몇몇개가 있는데

require, check 같은것들이 대표적이라고 생각한다.

 

require 는 에러를 IllegalArgumentException 으로 던지지만

check 는 IllegalStateException 으로 던지기때문에 새로 wrapping 해서 쓰는것도 나쁘지않을꺼같다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class Chapter09 {
 
    @Test
    fun basic() {
        require(isTeenager()) {
            "성인이용불가 컨텐츠입니다."
        }
 
        check(isBettingMoneyLess()) {
            "충분한 베팅금액이 있지않습니다."
        }
        
        naverRequire(isTeenager()) {
            "성인이용불가 컨텐츠입니다."
        }
    }
    
    private fun isTeenager(): Boolean {
        return false
    }
 
    private fun isBettingMoneyLess(): Boolean {
        return false
    }
 
    class NaverException(message: String) : RuntimeException(message)
    private inline fun naverRequire(check: Boolean, lazyMessage: () -> String) {
        if (check) {
            throw NaverException(lazyMessage())
        }
    }
}
cs
반응형