2025 . 오은

repo

냄새나는 코드?

문제 정의

불필요한 조건문과 중복된 로직이 가독성과 유지보수성을 해쳤습니다.

if(pageQery !== null) {
  const page = Number(pageQuery);
  const start = page === 1 || page === 0 ? 0 : (page - 1) * MOIMS_ITEMS_PER_PAGE;
  // ...
}

급하게 구현하느라 생각이 가는 대로(?) 작성했던 코드.
하지만 지나고 보니 너무나도 이상해 보였습니다.
단순한 조건문 개선 상황이지만, 이런 실수를 계속 반복하면 안 된다고 생각했습니다.
나는 앞으로도 이런 짓을 할 것인가? 하는 성찰의 순간이 찾아왔습니다.

해결 과정

🔍 왜 이해가 안되고 무슨 문제가 있었을까?

  • page === 1 || page === 0 → 불필요한 조건문
  • NaN, undefined, "" 처리 없음 → 잠재적 버그
  • 음수 값이 들어올 경우 대비 안 됨 → 치명적 문제

수정된 코드

const page = Math.max(1, Number(pageQuery) || 1); // 최소 1 보장
const start = (page - 1) * MOIMS_ITEMS_PER_PAGE;

결과

  1. 불필요한 pageQuery !== null 조건문 제거
  2. 첫번째 페이지를 자동적으로 기본값으로 설정
  3. NaN, undefined, '', 음수 처리까지 완벽 대응

배운 점 (인사이트)

🚀 리팩토링이란? 당장은 잘 돌아가더라도, 미래를 위한 투자다.
🐛 어쩔 수 없이 넘어갔다면, '냄새' 를 맡는 즉시 고치자!
🔥 역시 근본이 중요합니다!