안드로이드 앱 개발기 #32 - 가독성 증진을 위한 확장 함수 사용

코틀린 언어를 배우면서 마음에 들었던 것들 중 하나는 바로 확장 함수입니다. 이것을 잘 이용하면 코드의 가독성을 크게 높일 수 있기 때문입니다. 다시 말씀 드리자면, 보다 읽기 쉬운 코드를 만들 수 있다는 것이지요. 스팀 앱 개발을 진행하면서 이에 대해 따로 정리가 필요하다고 판단하여 이번 포스트를 작성합니다.


String 클래스의 replace 메소드

String 클래스의 replace 메소드는 문자열의 일부를 다른 것으로 대체합니다. 예를 들어 이름 "John Smith"를 "John Lee"로 바꾸고 싶다면, 다음과 같이 이 메소드를 호출합니다.

val nameToUpdate = "John Smith"
val updatedName = nameToUpdate.replace("Smith", "Lee")

그런데 문자열의 일부를 삭제하고 싶다고 가정해 봅시다. 전화번호 형식이 "010-XXXX-XXXX"인데, 여기서 '-'를 제거하고 싶습니다. replace 메소드를 활용하면, 다음과 같이 코드를 작성할 수 있습니다.

val mobilePhoneNumber = "010-0000-0000"
val mobilePhoneNumberWithoutHyphen = mobilePhoneNumber.replace("-", "")

위와 같이 코드를 작성해도 되지만, 코드를 처음 볼 때 그 의미가 한번에 와닿지 않을 수 있습니다. 실무에서는 이와 같이 의미가 한번에 바로 와닿지 않는 코드들이 쌓일 수 있습니다. 그러면 버전이 올라가면서 코드는 점점 더 읽기 어려워집니다. 가능한 읽기 쉬운 코드를 처음부터 작성하는 것이 더 좋습니다.


String 클래스의 replace 메소드를 활용한 확장 함수 구현

위 문제점을 개선하기 위해 아래와 같이 확장 함수를 구현했습니다. 메소드 이름만 봐도 문자열의 일부분을 제거하기 위한 것임을 바로 이해할 수 있습니다.

fun String.removeSubstring(substring: String) = replace(substring, "")

이 메소드를 활용하여 코드를 개선한 결과는 다음과 같습니다.

val mobilePhoneNumber = "010-0000-0000"
val mobilePhoneNumberWithoutHyphen = mobilePhoneNumber.removeSubstring("-")

지난 안드로이드 앱 개발기

Sort:  
 2 years ago 

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.29
TRX 0.12
JST 0.032
BTC 62276.80
ETH 3005.63
USDT 1.00
SBD 3.62