모듈화의 필요성을 느꼈던 부분
......
private fun createCountDownTimer(initialMillis: Long) =
object : CountDownTimer(initialMillis, 1000L) {
// 반환하려는 CountDownTimer는 추상클래스이므로 구현해야될 메소드가 존재한다.
// -> 따라서 object를 이용해서 익명 클래스로 구현하여 반환하는 것이다.
override fun onTick(millisUntilFinished: Long) {
updateRemainingTime(millisUntilFinished)
updateSeekBar(millisUntilFinished)
}
override fun onFinish() {
completeCountDown()
// 모듈화
}
}
private fun completeCountDown() {
updateRemainingTime(0)
updateSeekBar(0)
soundPool.autoPause()
bellSoundId?.let {
soundPool.play(it, 1f, 1f, 0, 0, 1f)
}
}
......
위의 onFinish()메소드의 내용이 너무 많았기 때문에 아래와 같이 모듈화 시켜서 넣어줬다.
이와 같은 방식으로 모듈화 시켜주는 것이 나중에 가독성을 매우 크게 높일 수 있다.
그리고 지금 아래에 모듈화 시킨 것을 보면 그 위치가 추상클래스를 구현하는 영역임을 알수 있는데, 이처럼 메소드는 어디에서든지 정의할 수 있다는 것을 명심하고 있자
따라서 모듈화를 습관화해서 코드의 가독성을 높이는 노력을 하자
아래 꼭 읽어볼 것 !!!!!!!!!!!
예를 들어 위의 onFinish()함수는 오버라이드하는 함수 ( 즉, 대체되지 않고 고유한 기능을 수행하는 함수이다. )
이런 오버라이드하는 함수의 경우 코드의 구성 파악에 있어서 핵심이며, 코드의 흐름에 큰 방향성을 제시한다.
따라서 이런 함수의 내부에 복잡한 코드들이 즐비해서 가독성을 떨어뜨리는 짓은 옮지 못하며,
그래서 위와 같이 모듈화 시켜준 뒤, 오버라이드 함수의 내부에는 그냥 모듈명 한줄만 써주는 것이 바람직하다. ( 코드의 흐름을 읽기 매우 편해진다. )