
함수의 인수를 통해 데이터를 전달하는 것은 코드를 읽는이에게 복잡함을 줄 수 있다. 다음 함수로 데이터를 전달하는 경우에는 Parameter로 넘기지 말고 Instance 변수를 활용하면 코드가 깔끔해진다.
출처
여러 개의 메소드에서 공통적으로 사용하는 파라미터들이 있어 이 변수들을 private 인스턴스 변수로 선언하여 여러 파라미터들을 전달하고 받아쓰는 것을 최소화시켰다.
StringBuffer와 String 중에 어떤 변수로 선언해야 할지 고민했었는데, 내가 현재 수정하고 있는 코드는 변수에 새로운 값을 계속 할당(덮어쓰기)하는 것이지, 문자열을 추가하거나 연산하는 것은 아니기 때문에 String으로 선언하였다.
private String kakaoId;
private String campusName;
private String day;
private String period;
private String cafeteriaName;
요청 파라미터를 처리하기 위해 필요한 변수들이 이렇게 5개가 있는데, 이 변수들을 DTO 객체로 묶었다.
이유는
1. 여러 메소드에서 위의 변수들을 필요로 함
2. 변경이 없어야 함 -> 불변성
인스턴스 변수를 사용하는 것이 바로 변수를 불러 사용할 수 있기 때문에, 코드 상 편리했지만 변수가 변경될 상황이 없고, 새로운 파라미터가 추가될 상황을 고려해서 하나의 객체로 만들기로 했다.
이렇게 HandleRequestDto 클래스를 만들어 총 5개의 변수들을 final로 선언하였다.
이렇게 객체를 생성해주고
메소드에 객체를 넘겨주면 getter 를 통해 값을 가져오는 방식으로 변경했다.
내가 이런 코드를 작성한 것에 대해 정확한 근거와 확신이 있어야 한다. 하지만,, 인스턴스 변수가 몇 개 존재할 때, 많은 건지 적은건지 또, 언제 DTO 클래스를 생성해서 사용하는 것이 더 효율적인건지 이런 기준들이 좀 모호한 것 같다.
개발을 더 많이 해보고 공부해봐야 저 기준들이 선명해질 것이다.