많은 개발자들이 같은 알고리즘을 반복해서 구현한다.
이미 언어에서 제공되고 있는 함수인데도 말이다.
val percent = when{
numberFromUser > 100 -> 100
numberFromUser < 0 -> 0
else -> numberFromUser
}
이함수는 이미 coereIn
확장함수로 이미 존재한다.
내장되어 있는 함수를 사용하면 어떤 장점이 있을까?
일반적인 알고리즘은 대부분 이미 다른 사람들이 정의해 놓았다.
stdlib
는 확장함수를 활용해 만들어진 거대한 유틸리티 라이브러리다.
overide fun saveCallResult(item : SourceResponse){
var sourceList = ArrayList<SourceEntity>()
item.sources.forEach{
var sourceEntity = SourceEntity
sourceEntity.id = it.id
..
..
}
db.insertSource
}
앞의 코드에서 forEach
를 사용하는것은 For반복문을 사용하는것과 같다.
현재 사용된 코드에서는 매핑처리를 하고 있으므로, map()
함수를 사용하는것이 좋다.
또한 SourceEntity를 설정하는 부분이 JavaBean패턴을 사용하고있는데
이러한 형태보단 팩토리 메서드나, 기본 생성자를 사용하는것이 좋다.
상황에 따라 표준 라이브러리에 없는 알고리즘이 필요하다.
만약 모든 숫자의 곱을 계싼하는 라이브러리가 필요하다면 어떻게 해야할까?
이는 널리 알려진 추상화(공통적으로 사용될수 있기 때문에) 범용 유틸리티 함수로 정의 하는것이 좋다.
중요한 부분은 여러번 사용하지 않는다고 해도 이렇게 만드는것이 좋다.
동일한 결과를 얻는 함수를 여러번 만드는것은 잘못된 일이다.
모든 함수는 테스트 되어야하며, 유지보수 되어야하기 때문에 기존에 관련된 함수가 있는지 탐색하는 과정이 필요하다.
확장 함수로 구현하면 일반적인 함수로 구현할때보다 많은 장점을 갖고있다.