[Kotlin+Spring] 자주 사용하는 변환식 확장 함수(Extension Function) Util로 관리하기
반응형

회사에서 프로젝트를 진행하다 보면 자주 사용하게 되는 반복적인 변환을 많이 하게 되는 경우가 있다.

그럴 경우 공통 util로 빼서 관리하면 형식이 수정될때 한번에 수정하기도 편하고 코드량 자체도 줄어들 수 있어.. 기록용으로 남겨본다.

 

공통 모듈 코드

현재 회사에서는 날짜랑 금액을 나타낼때 해당 util을 사용했었다

object ConvertToStringUtil {

    // timestamp를 특정 날짜 형식으로 표현
    fun Int.toStringDate(): String {
        val dateTime = LocalDateTime.ofEpochSecond(this.toLong(), 0, ZoneOffset.of("+9"))
        return dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd").withLocale(Locale.KOREA))
    }

    // LocalDateTime을 특정 날짜 형식으로 표현
    fun LocalDateTime.toStringDate(pattern: String): String {
        return this.format(DateTimeFormatter.ofPattern(pattern).withLocale(Locale.KOREA))
    }

    // 금액표현할때 쓰는 util.. 1000 -> 1,000
    fun Long.toStringFormatPrice(): String {
        val decimalFormat = DecimalFormat("#,###")
        return decimalFormat.format(this)
    }
}

이렇게 자주쓰는 변환의 경우 자료형의 확장 함수(Extension Function) 로 만들어서 util로 선언해두면 쓰기 쉽다! 아래 사용예시를 보자

 

알림톡을 발송할때 결제금액(amount)를 가격표시(,)를 붙여줘야할때 util이 없다면 일일이 변환하는 코드를 작성해줘야 하지만 이런식으로 long형의 함수처럼 만들어둬서 간단한 코드로 가격표시 형식을 통일할 수 있다.

import kr.test.api.util.ConvertToStringUtil.toStringFormatPrice
...
alimtalkService.sendAlimtalk(
    PublishAlimtalkMessage(
        templateCode = templateCode,
        phoneNumber = client.phone,
        templateParameter = SendPaymentResultTemplate(
            고객명 = client.name,
            결제명 = paymentName,
            결제일 = paymentTime,
            결제금액 = "${amount.toStringFormatPrice()}원",
        ),
     )
)

서비스를 구현하다 보면 이런식으로 해당 서비스에서 자주 사용하는 변환식들이 생겨나는대 util로 빼면 훨씬 빠르고 간단하게 코드를 작성할 수 있다.

반응형