티스토리 뷰

반응형

코틀린(Kotlin) 답지 않은 문법 사용

팀원분에게 코드리뷰를 받으면서 내 코드가 코틀린(Kotlin)스럽지 않은 부분이 있다고 깨달은 부분이 있다.

 

일단 기존의 코드를 먼저 보자.

fun findAll(): List<CouponDto> {
    val couponList = couponRepository.findAll()
    return couponList.stream()
        .map { CouponDto.fromEntity(it) }
        .collect(Collectors.toList())
}

위 코드의 return 부분을 살펴보자.

아마 바로 이상함을 느꼈을 수도 있고 아무런 이상함을 느끼지 못하셨을 수도 있다.

나는 별다른 이상함을 느끼지 못하고 사용하고 있던 코드였다.

 

그런 어떤 부분이 코틀린스럽지 못한 부분이었을까??

 

바로 stream()을 사용하는 부분이다. 

Java에서는 stream()을 사용하지만 코틀린에서는 더 간결한 collection 함수를 제공하기 때문에 굳이 stream() 을 사용할 필요가 없다는 것이다.

 

코드 개선

그러면 stream을 제거해서 코드를 개선해보자!

fun findAll(): List<CouponDto> {
    val couponList = couponRepository.findAll()
    return couponList.map { CouponDto.fromEntity(it) }.toList()
}

코드를 개선한 부분은 아래와 같다.

1. stream() 을 제거

2. collect(Collectors.toList()) 부분을 코틀린의 toList()메서드로 간단하게 변경

 

기존 코드보다 훨씬 깔끔해진걸 볼 수 있다.

 

하지만 코틀린언어를 잘 활용하면 조금더 변경이 가능하다.

이번에도 먼저 코드를 살펴보자.

fun findAll(): List<CouponDto> {
    val couponList = couponRepository.findAll()
    return couponList.map(CouponDto::fromEntity).toList()
}

map 함수부분을 코틀린의 멤버 참조 기능을 이용해서 map(CouponDto::fromEntity)로 변경하였다.

 

 

이제 기존의 코드와 개선된 코드를 비교해 보면 차이가 확 느껴진다.

그동안 신경쓰지 못한 부분에서 코틀린을 코틀린 답지 않게 사용하고 있었던걸 깨달을 수 있었다.

이번 기회를 통해 코틀린언어에 대해 다시 한번 공부해볼 수 있는 시간이었다.

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함