com.example.project.controller
com.example.project.service
com.example.project.repository
com.example.project.model
// 상수
static final int MAX_COUNT = 100;
// 변수
int itemCount;
// 메서드
public String printCount() { ... }
boolean isExist;
boolean isTrue;
long base = 54423234211L;
List ids;
Map<User, int> userMap;
private class Address { ... }
public class UserEmail { ... }
대표적인 메서드들의 네이밍 규칙은 아래를 따릅니다.
// 조회(상세)
getXXX()
getXXXDetail()
getXXXInfo()
// 조회(리스트)
getXXXList()
// 조회(카운트)
getXXXCount()
// 등록
createXXX()
addXXX()
registXXX()
// 수정
updateXXX()
modifyXXX()
// 삭제
removeXXX()
deleteXXX()
// 상태 - XXX_STATUS
public enum MemberStatus {
WAITING_STATUS, // 수락 대기 상태
ACCEPT_STATUS, // 수락 상태
WITHDRAW_STATUS // 탈퇴 상태
}
// 유형 - XXX_TYPE
public enum UserType {
ADMIN_TYPE,
CUSTOMER_TYPE,
GUEST_TYPE;
}
- 파라미터가 1개인 경우: xxxFrom
public static User createUserFromUsername(String username) {
// username을 사용해 builder 호출
return new User(username);
}
- 파라미터가 2개 이상인 경우: xxxOf
public static User createUserOf(String username, String email) {
// username과 email을 사용해 builder 호출
return new User(username, email);
}
@Getter
public class ProductCreateRequest {
private ProductType type;
private ProductSellingStatus sellingStatus;
private String name;
private int price;
// AllArgumentConstructor는 private으로 직접 사용을 막아주고,
// @Builder 선언해서 직접 사용 막기
@Builder
private ProductCreateRequest(ProductType type, ProductSellingStatus sellingStatus, String name, int price) {
this.type = type;
this.sellingStatus = sellingStatus;
this.name = name;
this.price = price;
}
// toEntity
public Product toEntity(String productNumber) {
return Product.builder()
.productNumber(productNumber)
.type(type)
.sellingStatus(sellingStatus)
.name(name)
.price(price)
.build();
}
}
DTO ____Response.java ___Request.java