[Spring#40] Spring 팀과제 : NateamStore 프로젝트 리뷰 등록 API 기능 구현 / 알고리즘 : 둘만의 암호

김한준 Hanjun Kim·2023년 12월 6일
0

내일배움캠프

목록 보기
41/70

NateamStore 프로젝트 리뷰 등록 API 기능 구현

오늘 알게된것

  • Git 다루기

    • Git branch, Git issue

      • Git issue(내가 작업하고자 하는 것)을 먼저 등록한다.
        예) Feature/register_review
      • Git branch를 파는데, 이것 또한 메인에서 따와야 하며
        이름은 이슈와 같은것으로 등록한다.
        브런치는 내가 작업한것을 PR하기 위해서 파는 것이다.
    • 원격(Remote) 저장소 vs 로컬(Local) 저장소

      • 깃허브 : 원격 저장소
      • 인텔리제이 : 로컬 저장소

    지금까지 원격 저장소와 로컬 저장소를 아무 생각없이 쓰고 있었는데, 원격을 직접 건드리는건 정말 해서는 안되는 행위이다.

    로컬 main과 원격 main이 분리되어 있다는 사실을 잊지 말자.

  • 정적 팩토리 메서드

    1. 메서드의 이름을 만들어 주기 위해 사용한다.
      예) Color redColor = Color.valueOf("RED");
      여기서 valueOf도 정적 팩토리 메서드이다.

    2. 이름은 컨벤션으로 미리 정의되어 있다.(of, from 등)

    3. 호출할 때마다 새로운 객체를 생성할 필요가 없다.

    4. 객체 생성을 캡슐화할 수 있다.

    5. 예) public static Response of(Review review) {}

  • @Builder 패턴

    • 위에서 정적 팩토리 메서드를 만들 때, Builder패턴을 사용했다.
      예)
    	    // ASIS
    		User user = new User("테스트", 19, 181, 121);
    
    		// TOBE
    		User user = new User("테스트", 19, 181, 121, 79);

    위와 같은 빌더 패턴을 사용함으로써 얻을 수 있는 이득은

    1. 필요한 데이터만 설정할 수 있음
    2. 유연성을 확보할 수 있음
    3. 가독성을 높일 수 있음
    4. 불변성을 확보할 수 있음
  • 자바의 Record로 DTO 만들기

    • 원래 생성자로 DTO를 만들 때,
    @Getter
      public class DTO {
    
        private Long id;
    
        private String title;
    
        public DTO(Entity entity){
            this.id = entity.getId();
            this.title = entity.getTitle();
        }
      }

    이런 식으로 만드는데, 이것을 record로 만들게 되면

    public record QuestionResponseDto (
      Long id,
      String title,
      String content    
    ) {}

    이렇게만 쓰면 된다!

  • 데이터에 대한 유효성 검증 관련 Annotation(Validation) / 벨덩

    • 검증을 위한 어노테이션들이 있다. 이것들을 Vallidation 라고 부른다.
    • 벨덩 : https://www.baeldung.com/

알고리즘 : 둘만의 암호

깃허브 링크 : https://github.com/wkdehf217/codingTest/commit/1b46ac4b36fae4187f51ecd1ae4795aeb4121cf7

문제는 간단했지만, 내 풀이방식은 간단하지 못했다.
왜냐하면 contains과 같은 메서드들을 일부러 안쓰려고 피하다고 보니 어렵게 돌아갔던것 같다.
가끔은 메서드들도 쓰면서 풀어본 후에 리펙토링하는 방향으로 해야겠다.

profile
개발이 하고싶은 개발지망생

0개의 댓글