안녕하세요. 유저인사이트 박태양입니다.
코드리뷰를 하다보면 제가 신입시절에 했던 실수들을, 실습생 혹은 다른 개발자도 반복하고 있었습니다.
주니어 개발자분들에게 조금이나마 도움이되고자, Spring Boot 개발 중 자주 하는 실수들을 정리해보았습니다.
1. @NotNull @NonNull
import javax.validation.constraints.NotNull;
엔티티나 DTO 필드의 Validation에 주로 사용됩니다.
import lombok.NonNull;
null이 입력되면 NPE를 발생시킵니다. 생성자를 통한 의존성 주입 시 주로 사용됩니다.
보통 IntelliJ의 자동완성 기능을 사용하다가 발생하는 실수입니다.
2. @NotNull @NotEmpty @NotBlank
@NotNull : null
@NotEmpty : null, "" (띄어쓰기 허용)
@NotBlank : null, "", " " (띄어쓰기 미허용)
필드 Validation에 사용되는 어노테이션입니다.
허용하는 부분이 조금씩 다르므로 유의하여야 합니다.
3. @Index
주로 쿼리문의 조건절이나, 정렬대상이 되는 필드에 적용합니다.
인덱스를 따로 설정하지 않으면 검색 성능에 영향을 주게 됩니다.
@Table(name = "user", indexes = {@Index(columnList = "create_date")})
4. Restful하지 못한 API 개발
Restful한 API는 URL과 Method만으로 어떠한 기능을 하는 API인지 파악할 수 있어야 한다고 생각합니다.
대표적인 실수는 URL에 행위가 들어가 있는 경우입니다.
예) api/v1/users/delete
스택오버플로우 블로그에서는 아래와 같이 REST API 설계 규칙을 설명하고 있습니다.
- JSON으로 요청 및 응답
- 엔드 포인트 경로에 동사 대신 명사 사용
- 복수 명사 사용
- 논리적 중첩 사용 (같은 엔티티 관련 API는 같은 경로로 묶음)
- 에러처리 및 표준 에러코드 반환
- 필터링, 정렬 및 페이지네이션
- 보안 유지 (Role 체크 및 SSL 사용 등)
- 성능 향상을 위한 캐시 사용
- API 버전 관리
5. 불필요한 코드 (주석, 로그 등)
이 내용부터는 Spring Boot 뿐만 아니라 다른 프로젝트에도 공통으로 적용됩니다.
임의로 주석처리된 코드는 별도의 설명이 추가되어있지 않으면,
주석 처리를 한 이유를 알 수 없어 추후에 수정 및 삭제가 어렵습니다.
사용하지 않는 import문은 IntelliJ에서 제공하는 기능을 통해 쉽게 제거할 수 있습니다.
또한, 코드 포맷팅 단축키를 통해 커밋 전에 코드 스타일을 체크해주면 좋습니다.
6. 신기한 변수 네이밍
다른 개발자로 하여금 단어의 뜻을 검색해보게 하는 변수명은 좋지 않다고 생각합니다.
저는 기본적으로 사전적인 단어를 선택하고, 애매한 경우 구글 검색을 통해 해당 단어가 얼마나 사용되는지 확인해봅니다.
외래키나, 인덱스 네이밍도 어느 정도 정해진 룰이 있기 때문에 아래 내용을 참고해보시면 좋을 것 같습니다.
https://stackoverflow.com/questions/199498/foreign-key-naming-scheme
'세미나' 카테고리의 다른 글
OWASP Top 10 보안 취약점과 대응 방안 (0) | 2023.05.26 |
---|---|
Github Actions을 통한 Docker이미지 자동 배포 (0) | 2023.04.27 |
Svelte로 웹 개발을 간소화하기 (0) | 2023.04.13 |
실무에서 사용하는 Spring Security Configuration (0) | 2023.04.04 |
GPS 데이터와 좌표계에 대한 문제 해결 과정 (0) | 2023.03.17 |