WHAT: 하려는 것, 의미, 의도
- 가입한지 1년 미만...
- 추가 지급 내역을 남긴다...
HOW: 실제 구현 방법
- user 테이블에서 reg 컬럼 값 기준으로 count (가입한지 1년 미만...)
- log 테이블에 insert (추가 지급 내역을 남긴다...)
개선 전 (HOW에 집중한 결과)
int count = userDao.countUsersByReg(userId);
if (count > 0) {
pointRate += 1;
}
...
if (count > 0) {
logDao.insert(new Log(..., "AR", 1, ...));
}
개선 후 (코드를 WHAT으로 표현해보기)
int addPointRate = 0;
if (userRegistedLessThanOneYear(userId)) {
addPointRate = 1;
}
if (addPointRate > 0) {
recordAddPointHistory(userId, addPointRate);
}
WHAT과 HOW 분리 결과
- 구현을 잠시 잊고 실제 하려는 것이 무엇인지 생각하게 됨
- 실제 하려는 것이 코드에 표현될 가능성이 높아짐
- 코드의 가독성이 향상
- 유지보수성이 좋아짐
출처: https://www.youtube.com/watch?v=4xg4OeGzGIw