TIL

TIL - 쇼핑몰 프로젝트 (Plain Old) 47일 차. 상품문의 API 구현완료 및 폴더구조 변경.

김뚜루 2023. 2. 28. 19:02

쇼핑몰 프로젝트 47일 차. 상품문의 API 구현 완료.

쇼핑몰 프로젝트 47일 차. 상품문의 API 구현 완료.

 

잠을 제대로 자지 못해 컨디션이 나쁠거라 예상했지만 생각보다 컨디션이 괜찮아서 목표로 했던 상품문의 API는 모두 구현할 수 있었다.

비록 CRUD 반복적인 작업이지만 최대한 객체지향맛을 담아보려고 노력했다.

아래는 Inquiry를 수정하거나 삭제할 때 실행하게 되는 Inquiry의 메소드들. User의 username과 role을 통해 권한을 확인하는 로직과 자신이 수정이 가능한 상태인지 확인하는 로직이 담겨있다.

@Entity 
public class Inquiry {
//fields

public void edit(Username username, Role role, Title title, Content content) {
        if (!checkUserAuthority(username, role)) {
            throw new NotHaveEditInquiryAuthority();
        }

        if (!checkInquiryCanBeEdited()) {
            throw new InquiryCannotBeEdited();
        }

        this.title = title;
        this.content = content;
    }

    public void delete(Username username, Role role) {
        if (!checkUserAuthority(username, role)) {
            throw new NotHaveDeleteInquiryAuthority();
        }

        this.status = Status.DELETED;
    }

    private boolean checkInquiryCanBeEdited() {
        return Objects.equals(this.status, Status.PENDING);
    }

//....

찾기 힘들다면, 찾기 쉽게 만들면 되지.

프로젝트 크기가 커지고 파일이 많아지자 원하는 파일이나 클래스를 찾는데 시간이 점점 오래걸리는 경향이 있어 폴더구조를 개선해보았다.

이게 맞는 구조인지는 모르겠으나 폴더를 나누기 전에 비해 원하는 클래스나 파일을 찾기 무척 수월해진 느낌.

무언가가 힘들다고 느껴진다면 참지 말고 개선을 하도록 하자.