2021-03-10-TIL

[CODE REVIEW]

  • 수요일 - Jane, bat
  • 금요일 - August, 새리

Mission 1 by Bat

  • HiddenHttp가 어떤 역할을 하죠?
  • field에 @Autowired는 지양하는게 좋은 것 같습니다. Field injection is not recommended
    • https://stackoverflow.com/questions/39890849/what-exactly-is-field-injection-and-how-to-avoid-it#:~:text=The%20reasons%20why%20field%20injection,in%20unit%20tests)%20without%20reflection.
    • https://yaboong.github.io/spring/2019/08/29/why-field-injection-is-bad/
    • https://blog.marcnuri.com/field-injection-is-not-recommended/
  • SpringMVC 형태로 프로젝트를 진행한다면 service 클래스를 별도로 구현하고 거기에서 repository를 의존주입 받아서 사용하는 것이 바람직할 것 입니다. 그리고 controller에서는 repository(혹은 dao) 객체를 주입받는 형태입니다. 하지만 이미 JPA를 사용하여 구현하셔서 정확히 어떤것이 맞다고 하긴 힘들겠네요..
  • 에러 처리에 관한 내용 - Whitelable Error Page가 안뜨도록
  • Handlebars 블록 템플릿을 이용하여 묶어주는게 좋아보인다.
  • QuestionController 인덱스 반환하는거 HomeController를 따로 분리하는 것이 좋아보인다.
  • Logger 사용 및 toString() 사용목적 고려
  • final로 url관리하는 것은 추천받은 내용인가요?

[Jane]

  • HiddenHttp 설정은 스프링 2.x 버전부터 설정을 해주어야 한다. application.properties에 설정해주게 되면 자동생성되니까 클래스를 이렇게 별도로 생성할 필요가 없다.
    • https://stackoverflow.com/questions/34048617/spring-boot-how-to-use-hiddenhttpmethodfilter
  • QuestionController 인덱스 반환하는거 HomeController를 따로 분리하는 것이 좋아보인다.
  • UserController에서 Optional로 받은 것을 예외처리 덜 한것같다.
  • JPA 기획자와 소통을 위해 가입은 join, 웹 페이지에서 볼 수 있는 유의미한 네이밍으로!!
  • MvcConfiguration에서 user/login을 그대로 하면 안될 수 있다.

[Kyu]

  • System.out.println -> Logger 사용으로
  • @PathVariable Long id를 사용하는 이유? -> 빼도될것같아서 빼야겠다.

Mission 2 by Jane

[August]

  • logger.info를 보통 저렇게 문자열만 출력하는지는 모르겠으나, 좀 더 세련된(?) 방법으로 answer객체의 생성을 확인하는 방법 등이 있을 것 같습니다.
  • HttpSessionUtils가 controller에 해당하는 클래스는 아닌데, 유틸클래스가 만약에 많아진다면 별도의 패키지로 분리하는 것도 나쁘진 않을 것 같습니다.
  • 필드를 개행 해주는 것도 좋은것 같습니다.
  • Logger를 스태틱으로 선언
  • protected 생성자는 어떤 목적인가요? ->
  • isSameAuthor이 더 직관적이지 않을까 하는 개인적인 의견입니다.
  • getDate에서 포맷팅 해주는 것 보다는 별도의 getter로 포맷해주는 것이 더 좋다고 합니다.
  • 진짜 서비스처럼 구현하기 위해서는 비밀번호 확인 페이지를 별도로 만드는게 좋아보입니다.

[Kyu]

  • 아무것도 입력을 안해도 회원가입이 되더라.
  • 질문 작성할 때 일부 내용이 고정되어있던데 수정 부탁.
  • 맵핑되지 않은 url 처리에 대하여 -> 404 페이지 커스텀 해보기 추천.
  • 데이터가 날아가지 않게 처리한 것이 좋아보임.
  • jpa repository에서 인터페이스만 작성하였는데 어떻게 내부적으로 구현해주는지?

[bat]

  • qna 번호가 전부 8로 되어있는 부분 수정.
  • HttpSessionUtils를 따로 뺸 이유? -> 그냥 중복되어서…

[새리]

  • protected로 생성자를 정의한 이유? -> 다른데서 초기화되지 않은채로 마음대로 객체를 생성하는 것을 방지하기 위해서