개발 slecs

내부 로직 통합으로 코드 중복 제거

목차

비정상 페이지 진입 시 학습 기회 보장 + 반복 실패 차단

리팩토링 작업을 완료했음.

리팩토링 이유

코드 가독성과 유지보수성 향상을 위한 리팩토링이었음.

변경 전/후

// 수정 전: 중복/복잡 로직
// 각 클래스에 동일 로직 반복

// 수정 후: 명확하고 단일 책임
public static Long resolveId(Object source) {
    if (source instanceof TypeA a) return a.getId();
    if (source instanceof TypeB b) return b.getRefId();
    throw new IllegalArgumentException("지원하지 않는 타입: " + source.getClass());
}

변경 범위

내부 클래스 5개

기대 효과

코드 가독성이 높아지고 수정 비용이 낮아졌음. 동일 기능을 더 적은 코드로 표현하게 됐음.

회귀 검증

리팩토링은 외부 동작을 바꾸지 않아야 함. 입력/출력이 동일한지 주요 케이스를 기준으로 확인했음. 내부 구조만 변경했고, 배포 후 이상 없이 동작했음.

보안 고려사항

이번 변경에서 보안 측면을 함께 검토했음.

입력 검증: 외부에서 들어오는 파라미터는 항상 서버에서 재검증함. 클라이언트 검증만으로는 부족함.

권한 확인: 요청자가 해당 리소스에 접근 권한이 있는지 확인했음. 타인의 데이터를 조회/수정하는 API는 소유자 확인이 필수임.

// 소유자 확인 예시
if (!resource.getOwnerId().equals(loginUserId)) {
    throw new AccessDeniedException("접근 권한이 없습니다");
}

로그: 민감한 데이터(금액, 개인정보)는 로그에 마스킹해서 남겼음.

다음

댓글 0

첫 댓글 달아줘.