-
네이밍 컨벤션 정하기스터디 & 프로젝트/Mineme 프로젝트 2023. 2. 10. 23:22
필요성
매 번 프로젝트를 진행하면서 겪은 문제는 "이름 정하기" 였다.
모든 개발자들이 고민하는 문제다. 어떻게 하면 가독성 좋고 깔끔한 방식의 명칭을 정할 수 있을지 고민한다.
여러 번의 팀 프로젝트를 진행했지만 늘 백 엔드 개발을 거의 혼자 진행하다보니 협업의 관점에서 이런 컨벤션을 명확하게 작성한 적이 없었다.
늘 API 명세, DB 스키마 작성 정도 수준에서 마무리 했던 것 같다.
하지만 이번에 새로운 사이드 프로젝트를 진행하면서 백 엔드 개발 협업을 진행하기로 했다.
이제 우리 팀의 네이밍 컨벤션을 정해야 한다.
나의 습관
나도 무작정 네이밍 컨벤션을 쓰지는 않았다. 명칭 작성은 무조건 카멜케이스로 작성했다. 상수명은 대문자와 언더바 만을 사용했다.
하지만 습관에 의지한 상태였다. 주로 MVC 패턴으로 개발을 하면서 각 계층마다 컨벤션을 구분하지는 않았다.
보통 나는 별도의 구분 없이 컨벤션을 사용했다.
retreive
: 조회create
: 추가, 생성modify
: 수정delete
: 삭제
이런 상황에서 불편함이 없었던 것은 아니다.
컨트롤러, 서비스 각각의 메소드 명칭이 중복되는 경우가 생기고 이런 경우 어떻게 계층을 구분할지 따로 확립한 적은 없었다.
컨벤션 정하기
그렇기에 팀 협업에서도, 나의 앞으로의 컨벤션에 있어도 새로운 컨벤션을 정할 필요가 있다.
물론 특별한 컨벤션을 사용하는 것은 오히려 마이너스라 생각한다.
늘 커먼하고 범용적인 컨벤션을 추구하는게 맞다고 생각한다.
기능 별
조회에서
get
과retrieve
를 사용한다.- 팀, 개인 프로젝트에서
get
을 사용하기로 했다. - 기존에는
retrieve
를 사용했다. retrieve
는 응답 객체가 불확실한 경우에 사용한다고 한다.
생성에서
add
를 사용한다.- 기존에는 개인적으로
create
를 사용했으나 짧고 간결한 것이 좋은 것 같다. - 팀, 개인 컨벤션 모두 동일하다.
수정에서
modify
를 사용한다.- 개인적인 생각으로
update
는 DB 레코드에 직접 접근하는 쿼리 성격이 강하다고 생각한다. - 팀, 개인 모두 통일했다.
삭제에서
remove
를 사용한다.- 기존의 파이썬이나 자바 자료구조에서 사용하는 메소드들도
remove
를 사용했었던 기억이 있다. - 팀, 개인 모두 통일했다.
계층 별
Controller와 Service 계층에서 사용할 컨벤션은 아래 팀 원의 링크에서 확인하자.
객체, 기능 별
단수 객체에서 요약 기능은
summary
를 사용한다.itemSummary
와 같은 형태이다.- 개인 컨벤션으로 사용한다.
단수 객체에서 상세 기능은
detail
을 사용한다.- 개인적으로는
itemDetail
로 사용했다. - 팀, 개인 모두
itemDetails
로 통일한다.
복수 객체 조회 기능은
List
를 사용한다.itemList
와 같은 형태이다.- 나도 기존에 사용하는 방식이기에 팀, 개인 모두 통일했다.
참고자료
https://docs.osgi.org/specification/osgi.core/7.0.0/framework.dto.html
https://www.baeldung.com/java-dto-pattern
https://www.inflearn.com/questions/89727/%EC%9A%94%EC%B2%AD%EB%B0%9B%EB%8A%94-%EA%B0%9D%EC%B2%B4%EC%9D%98-%EC%9D%B4%EB%A6%84%EB%8F%84-dto%EB%A1%9C-%EB%84%A4%EC%9D%B4%EB%B0%8D-%ED%95%B4%EC%95%BC%ED%95%A0%EA%B9%8C%EC%9A%94https://jobc.tistory.com/212
https://devjino.tistory.com/52
https://jacking75.github.io/ETC_good_function_name/
https://learn.microsoft.com/en-us/dotnet/standard/design-guidelines/general-naming-conventions'스터디 & 프로젝트 > Mineme 프로젝트' 카테고리의 다른 글
[Spring Boot] 서비스 레이어 리팩터링하기 (0) 2023.03.15 [Spring Boot] Apple OAuth 적용하기 (0) 2023.02.26 [Spring boot] 응답 값 직렬화. (0) 2022.12.13