🛠︎ 수학문제 타이머를 리팩토링한 프로젝트
[기존 코드]
// 수업 리스트가 null인지 0.00n초간 확인한다.
private boolean isLecturesNullForNms(long n) {
for (int i = 0; i < n / 10L; i++) {
try {
Thread.sleep(10L);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (lectures == null) continue;
return false;
}
return true;
}
➡️ Coroutine의 withTimeout()을 사용하여 가독성, 처리 속도 증가
[기존 코드]
threadPool.execute(new Runnable() { // Callback 1
@Override
public void run() {
// 단원별 점수 리스트를 얻는다.
getScoreByUnit2List();
threadPool.execute(new Runnable() { // Callback 2
@Override
public void run() {
...
handler.post(new Runnable() { // Callback 3
@Override
public void run() {
...
}
});
}
});
}
}
➡️ Coroutine을 통한 동시성 프로그래밍으로 콜백 지옥 삭제
[기존 방식]
뷰와 레이아웃이 분리되어 있어(xml) 작업이 복잡하고, 가독성이 떨어짐
➡️ Compose를 통해 선언적 UI를 구성하여 가독성 증가, 부작용 감소
[기존 방식]
MVC 아키텍처를 적용하여 Activity가 비대해짐
➡️ MVVM 아키텍처를 적용하여 관심사 분리, 가독성 증가
