Skip to content

심화주차 과제 피드백 내용입니다. #16

Description

@cbjjzzang
  1. Restful한 설계를 잘 했나요?
    파일 업로드하는 controller가 따로 존재하는데 게시글 작성시 파일을 같이 올리는 방식이 아닌가요?
    게시글을 작성하는 api와 파일을 업로드하는 api를 꼭 분리해서 사용해야 하는 생각이 듭니다. 여러분이 게시판에 글을 쓰고 이미지를 업로드 한다면 어떻게 하셨나요? 게시글을 작성하면서 파일을 같이 업로드 해서 처리하는 방법을 생각해 보시면 좋을 것 같습니다.
    controller마다 앞에 /api 혹은 /auth 같은 굳이 사용하지 않아도 되는 명칭은 과감하게 날리셔도 괜찮을 것 같습니다. rest하다는 것이 어떤 의미인지 다시한번 찾아보시면 좋을 것 같습니다.
    Dto 패키지를 만들어 dto들을 같이 관리하시면 좋을 것 같습니다.
    사용하지 않는 어노테이션은 제거하셔도 괜찮을 것 같습니다. commentController에 @validated 어노테이션은 사용중인 걸까요?

  2. Entity 설계가 잘 되어있나요?
    Entity 설계는 잘 되어있는 것 같습니다. 다만 대부분의 테이블이 양방향 관계를 맺고 있는데 전부 양방향 관계를 맺어야 할지 확인해보고 맺는 것도 좋을 것 같습니다. 필요에 의해서 맺었다면 상관없지만 그렇지 않을 경우도 있을 수 있으니까요.
    연관관계를 맺으면서 실제 테이블을 만들지 않았음에도 테이블이 생성되는 경우는 없었나요? 만약 내가 만들지 않은 테이블이 생성된 경우가 있다면 언제 그렇게 생겼는지, 왜 생겼는지 확인해보면 좋은 공부가 될 것 같습니다.
    N+1문제에 대해 공부해 보셨나요? jpa를 사용했을 때 반드시 알아야 하는 부분이니 모르신다면 꼭 추가 학습 하시기를 권장합니다.
    generation type을 Identity로 설정해 사용하고 계시는데 auto와의 차이점과, auto로 했을경우 발생할 수 있는 문제점등을 알고 사용하셨다면 공부를 많이 하고 계신것 같습니다.
    대댓글 테이블을 따로 만들지 않고 댓글 / 대댓글을 구현할 수 있지 않을까요? comment 테이블 안에서 comment 를 관계 맺어 부모 자식 관계로 활용해 보는 방법도 찾아보시면 공부가 될 것 같습니다.

  3. 객체지향 설계를 적용했나요?
    객체지향적으로 설계하려고 열심히 하신것 같습니다. 처음부터 누구나 완벽한 객체지향적 설계를 하기는 쉽지 않습니다. 지속적인 리팩토링을 통해 코드를 고쳐나가시는 시도를 해보는 것도 많은 도움이 될 것이라 생각합니다.
    토큰을 검증하는 로직을 여러곳에서 사용하시는 것 같습니다. 이것을 하나의 함수로 분리해 사용할 수 있지 않을까요?
    객체지향 설계 5원칙에 대해서 알고계신가요? 알고계신다면 이를 얼마나 잘 지키며 코드를 작성했는지 확인해보는것도 좋을 것같습니다.

  4. 예외처리가 미흡한 부분은 없나요?
    예외처리를 꼼꼼히 하려고 노력하신 것 같습니다. 예외는 정말 많은 경우의 수를 가지고 있기 때문에 개발자는 항상 예외를 잘 처리하기 위해 노력해야 합니다.
    다만 지금은 모든 예외를 문자열로 직접 입력해 관리하시는 것 같습니다. 예외 클래스를 하나 만들어 예외 코드와 메세지를 관리하도록 해보면 어떨까요. 그렇게 관리하면 custom 하게 예외를 추가하거나 변경하기 쉬워질 것 같습니다. 유지 보수를 쉽게 하기 위한 코드를 작성하는 것도 중요합니다.

심화 주차 과제가 어렵다고 들었는데 과제에서 요구하는 기능등을 잘 구현하신 것 같습니다. 수고하셨습니다.👍

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions