Naming

  1. 기본적으로 네이밍은 누구나 알 수 있는 쉬운 단어를 선택한다.
  2. 변수는 CamelCase를 기본으로 한다.
  3. URL, 파일명 등은 kebab-case를 사용한다.
  4. 패키지명은 단어가 달라지더라도 무조건 소문자를 사용한다.
  5. ENUM이나 상수는 대문자로 네이밍한다.
  6. 함수명은 소문자로 시작하고 동사로 네이밍한다.
  7. 클래스명은 명사로 작성하고 UpperCamelCase를 사용한다.
  8. 객체 이름을 함수 이름에 중복해서 넣지 않는다. (= 상위 이름을 하위 이름에 중복시키지 않는다.)
  9. 컬렉션은 복수형을 사용하거나 컬렉션을 명시해준다.
  10. 이중적인 의미를 가지는 단어는 지양한다.
  11. 의도가 드러난다면 되도록 짧은 이름을 선택한다.
  12. 함수의 부수효과를 설명한다.
  13. LocalDateTime -> xxxAt, LocalDate -> xxxDt로 네이밍
  14. 객체를 조회하는 함수는 JPA Repository에서 findXxx 형식의 네이밍 쿼리메소드를 사용하므로 개발자가 작성하는 Service단에서는 되도록이면 getXxx를 사용하자.

Structure

  1. 패키징은 다음과 같이 한다.
- config (SpringSecurity의 SecurityConfig의 경우 config에 해당)
- controller
	- order
		- OrderResisterController
		- OrderCancelController
	- customer
		- CustomerResisterController
- service (주요 비지니스 로직)
	- customer
		- CustomerResisterService
- dto (데이터 캐리어를 사용할 때에는 dto를 만들어 사용)
	- LoginDto
	- UserDto
- domain (jpa와 관련된 entity 객체들을 만들 때에는 domain 사용)
	- Order
	- User
- util (Date 형식을 맞춰준다거나 여기저기에서 불러 쓰는 객체의 경우 여기에 두고 사용)
  1. Controller에서는 최대한 어떤 Service를 호출할지 결정하는 역할과 Exception처리만을 담당하자.