본문 바로가기
📕 Spring Framework/Spring Project

2022.05.16 「리팩토링」

by GroovyArea 2022. 5. 16.
프로젝트를 진행 중이다. 제대로 신경 써서 하다 보니 너무 오래 걸리는 것 같다. 또 제대로 짰다고 생각한 코드도 리팩터링 할 영역 투성이다. 이러면서 실력이 느는 거겠지..?
진짜 제대로 된 프로젝트 한번 만들어보자

리팩토링 목록

 

불변 객체 이슈

=> setter를 허용한 객체

 

문제 : 불변성을 띄질 못한다.

 

해결 : loginDTO 객체는 값을 전달하는게 목적이므로 확실하게 불변성을 지녀야 한다. 따라서 불변객체로 다시 만들자

public class UserLoginDTO {

    private final String userId;
    private final String userPw;

    public UserLoginDTO(String userId, String userPw) {
        this.userId = userId;
        this.userPw = userPw;
    }

    public String getUserId() {
        return userId;
    }

    public String getUserPw() {
        return userPw;
    }

}

=> 불변 객체

 

ResponseEntity 이슈

=> 기존 코드 핸들러마다 중첩된 responseEntity와 message 객체들

 

문제 : 응답 내용인 message 객체를 매번 생성하자니 더럽다. 또 Message 객체에 제너릭이 필요할 순간이 올텐데 그때 ResponseEntity와 중복 되므로 둘 중 하나만 쓰는 것이 나을듯 싶다.

 

해결 : 필요한 정보에 따라 하나의 객체로 응답과 message 객체 필드 추가 (상태코드 및 컨텐트 타입)

 

SQL 이슈

=> 리터럴이 직접 들어간 SQL -> 이런 거 하지 말자

 

문제 : 프로그램 내부에서 문제가 생길 시 알아보기 어렵다.

 

해결 : 리터럴 말고 변수로 넣자

 

​=> Flyway로 default 값 지정

 

결론

항상 신중히 코드를 작성하는 버릇을 들여야겠다. 
반응형