반응형
코틀린의 Filter함수를 사용하면 for문과 if문을 보다 간결하게 표현할 수 있습니다.
성능상 이점을 확인하긴 어렵지만 프로그램의 규모가 커질수록 가독성 부분에선 이점을 확실하게 확인할 수 있습니다.
러닝커브가 높진 않지만 활용하려면 조금 생각을 해야합니다. 하지만 for문과 if문은 평소에 많이 사용하기 때문에 익숙해질수록 좋다고 생각합니다.
아래 5명의 사람중 선택된 사람의 이름들만 뽑는 메소드를 만든다고 가정하겠습니다.
결과 : "사람1,사람3,사람5 "
data class Person(val name: String, val isSelect: Boolean)
var list = listOf(
Person("사람1",true),
Person("사람2",false),
Person("사람3",true),
Person("사람4",false),
Person("사람5",true)
)
For문 사용
for문을 사용하면 다음과 같이 표현할 수 있습니다.
fun getSelectPersonName(): String{
var resultString = ""
for(i in list.indices){
if(list[i].isSelect){
if(resultString.isEmpty()){
resultString = list[i].name
}else{
resultString += ",${list[i].name}"
}
}
}
return resultString
}
간단한 코드이지만 프로그램 규모가 커질수록 많은 사용되어 가독성을 해치더라구요.
Filter함수 사용
'filter' 와 joinToString를 사용하여 다음과 같이 표현 했습니다.
비록 joinToString은 Filter 함수가 아니지만 보다 코틀린 스럽게 코딩했다고 생각합니다.
fun getSelectPersonName(): String{
return list.filter {
it.isSelect
}.joinToString(separator = ","){
it.name
}
}
라인수가 대략 반으로 줄어든걸 감안하면 프로그램 규모가 커질수록 이점은 더 커집니다.
코틀린을 사용하면서 조금 더 효율적으로 쓸수 있는 방법을 고민하곤 합니다. 이 포스팅을 보고 계신 개발자분들도 '보다 효율적이게', '보다 코틀린스럽게'를 생각하시면서 코딩 해보시는걸 추천합니다.
반응형
'안드로이드 > 코틀린' 카테고리의 다른 글
[AOS] 서드파티 앱을 이용하여 이메일 전송하기 & 앱내 문의하기 기능 구현 (0) | 2022.06.29 |
---|---|
[AOS] Retrofit Response 동적 파라미터 Type으로 받기 (0) | 2022.06.21 |
[AOS] Custom QR Reader 만들기 (0) | 2022.03.30 |
[AOS] Mopub Migration MAX ( 광고 SDK ) (0) | 2022.02.23 |
[AOS] 하단 네비게이션 배경색 변경 (0) | 2021.11.25 |