2024/12/08 4

Spring 본캠프 Day 063 - 숙련 Spring 1주차 완강, 리팩토링이 아니라 이터널 리팩토링, 줄여서 이팩토링 중, 끝이 안 난다!

코드의 가독성이나 유지 보수성을 높이고자 내부 구조를 바꾸는 작업을 리팩토링(refactoring)이라고 하는데, 한 군데를 바꾸면 또 바꿀 데가 생기고 그곳을 다시 수정하면 또 고칠 곳이 눈에 띄었다. 다른 팀원분의 말대로 영원한 리팩토링, 일명 이터널 리팩토링(Eternal Refactoring)을 계속했다.TIL을 짧게 작성하고 if문과 else if문을 사용하며 중복된 부분을 다시 리팩토링해야 한다. 그냥 제출한다고 과제 점수가 깎이진 않겠으나, 내 마음에 들지 않는 코드가 다른 사람 마음에 들 리가 없었다. 위에 쓴 코드 또한 챗GPT의 도움을 많이 받은 만큼, 처음 쓰는 메서드(method)를 꼭 공부해야 지식을 제대로 나의 것으로 만들 수 있었다. 공식 문서를 읽으며 사용법을 익히고 하루를 ..

1단계: "아무래도 이름(name)이란 체에 구멍이 뻥 뚫렸나 보다."

[문제]분명히 Key 값으로 name을 넣었는데도 결과는 일정 목록을 조회할 때와 별반 다르지 않았다. 차라리 400이나 500번 대 오류 메시지가 떴다면 원인이 뭔지 금방 찾을 수 있으나, 200 OK 메시지가 뜨면 코드를 다시 읽어야 했다. 우선 수정한 부분을 다시 읽었다. [원인]package com.spring.weekthree.repository;import com.spring.weekthree.dto.PlanResponseDto;import com.spring.weekthree.entity.Plan;import org.springframework.http.HttpStatus;import org.springframework.jdbc.core.JdbcTemplate;import org.spring..

2단계: "왜 수정 날짜를 수정하려고 하니!"

[문제]벌써 500 Internal Server Error 메시지를 두 번이나 봤다. 이쯤 되니까 놀랍지도 않았다. 이번엔 또 뭘 잘못 했을까, 차분한 마음으로 설명을 읽었다. [원인]package com.spring.weekthree.repository;import com.spring.weekthree.dto.PlanResponseDto;import com.spring.weekthree.entity.Plan;import java.time.LocalDate;import java.util.List;import java.util.Optional;// [1/2] 인터페이스public interface PlanRepository { PlanResponseDto save(Plan plan); List ..

1단계: "@NoArgsConstructor가 굴린 대형 눈덩이"

[문제]처음에는 전부 다 빨간 줄이 쳐져서 얼마나 심장이 벌렁벌렁 뛰었는지 모른다. 분명 강의를 들으며 코드를 따라 쳤는데, 왜 내가 쓴 코드에만 문제가 생기는지 영 감을 못 잡았다. 챗GPT에도 물었으나, 분명한 답을 얻지는 못했다. [원인]package com.spring.weekthree.entity;import lombok.AllArgsConstructor;import lombok.Getter;import java.time.LocalDate;import java.time.LocalDateTime;/*entity에 해당하는 Plan 클래스[오답] NoArgsConstructor[정답] AllArgsConstructor*/@NoArgsConstructor@Getterpublic class Plan {..