안녕하세요, 컨트롤러의 구현 방법에 대한 질문입니다.
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? 예
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예
3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예
[질문 내용]
안녕하세요, 강의를 들으면서 영한님께서 작성해주신 코드 뿐만 아니라, 그동안 공부했던 방법을 활용하여 다르게 표현할 방법이 없을지를 항상 고민하며 강의를 수강하고 있습니다.
(강의를 열심히 수강중인 것으로 생각해주시면 감사하겠습니다 ㅎㅎ..)
물론 설명을 너무 잘해주셔서, 강의의 내용과 흐름은 이해할 수 있었는데요, 이 과정에서 몇몇 궁금한 것이 생겨 질문드리게 되었습니다.
메서드 파라미터 사용

이 코드는, v4에서의 프론트 컨트롤러 코드인데요, 저는 "메서드 파라미터는 변경하지 않는 것이 좋다"라고 알고 있는데, 그래서 controller.process(paramMap,model) 에서 model이 변경(정확히는 참조는 바뀌지 않지만 컬렉션 내부 내용의 변화)되는 부분이 조금 어색하게 느껴지는 것 같습니다.
그래서 드리는 질문은, 저는 v3에서의 프론트 컨트롤러 코드 흐름이 더 쉽게 와닿는 느낌인데요, 영한님께서는 각각의 컨트롤러에서 ModelView를 생성하지 않는 장점이 더 크다고 판단하신 건지 궁금합니다.
2. 인터페이스의 디폴트 메서드 사용
이 코드는, v5의 Adaptor의 구현 클래스에 공통적으로 정의되는 createParamMap() 메서드인데요! 인터페이스의 디폴트 메서드를 활용하면 V3, V4에서의 코드 중복을 해결할 수 있을 것 같다는 생각이 들었습니다.
그래서 궁금한 점은, 나중에 createParamMap()을 사용하지 않는 어댑터를 추가할 수 있으니 중복을 감안하고 V3, V4에 각각 정의하는 것이 좋은 방법인지, 혹은 V3, V4에는 코드가 중복되니 코드 중복 제거 차원에서 디폴트 메서드로 정의하는 것이 좋은지에 대한 의견이 궁금합니다.
읽어주셔서 감사합니다. 즐거운 하루 보내세요!
답변 1
1
안녕하세요. 이상진님
모든 프로그래밍의 적용 방법에는 트레이드 오프가 있습니다. 우리가 컬렉션을 인자로 넘기고 특정 함수에서 컬렉션에 값을 채우는 것은 일반적인 프로그래밍 방식입니다. 대신 이런 경우 의도를 명확하게 들어내는 것이 좋습니다. 이 경우 컬렉션(Model)에 데이터를 모은다는 의도가 아주 명확하기 때문에 괜찮습니다. 또한 실용적인 관점에서 컨트롤러 내부의 코드가 단순해지기 때문에 좋은 선택이라 할 수 있습니다. 아무리 좋은 방식이라도 해당 프레임워크를 사용하는 개발자가 코드를 복잡하게 작성해야 한다면 좋은 디자인이라고 하기는 어렵습니다.
인터페이스의 디폴트 메서드는 가급적 사용하지 않아야 합니다. 특히 단순히 중복 제거 관점에서는 권장하지 않습니다. 이 경우 간단한 유틸리티 클래스를 만들어서 위임을 하는 것을 더 권장합니다. 인터페이스의 디폴트 메서드는 하위호환을 유지해야 할 때, 고려하고 하는 것이 좋습니다. 쉽게 이야기해서 인터페이스는 최대한 인터페이스의 의도에 맞도록 사용해야 합니다.
감사합니다.
servlet과 container에 대한 질문입니다
0
20
1
api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?
0
62
1
jsp 의존성 수정 요청
0
75
2
요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?
0
142
1
save() 메서드 문의
0
65
1
절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상
0
99
1
request-body-json
0
83
2
MVC 패턴의 적용 단위
0
94
1
RequestMapping을 이용한 핸들러, 어댑터
0
118
2
save 후 결과화면
0
86
2
jsp를 이용한 view
0
97
1
application.properties에 debug 추가해도 결과가 똑같습니다.
0
174
1
수업 코드 제공 관련 문의
0
96
2
RequestMappingHandlerAdapter의 Controller 호출 과정
0
98
3
파일 오픈 시
0
68
1
스프링 배치 관련
0
77
1
@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부
0
112
1
postman으로 /request-body-json-v1 호출시 500 error
0
94
1
프론트엔드와 백엔드의 mvc, rest api에 대한 질문
0
77
1
모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문
0
111
1
console log 출력 관련 질문입니다.
0
73
1
애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ
0
137
1
html 변경하는 부분 적용 문제
0
100
1
한글 깨짐
0
76
2





