📚Convention
컨벤션은 말 그대로 예로부터 내려오는 일명 "국룰"이다.
convention을 직역하면 "전통적인"이라는 뜻으로
효율적으로 아키텍처를 구성할 수 있도록 인간의 사고력을
기준으로 누구나 이해하기 쉽도록 예로부터 내려오는
개발자들의 네이밍 방식, 폴더구조, 모듈화 방식 등을 의미한다.
🤔Why do we need conventions?
우리에게 컨벤션이 필요한 이유로 가장 먼저 떠오르는 것은
협업을 위한 컨벤션일 것이다.
팀과함께 프로젝트를 진행함에 있어 일관성을 만들어
하나의 약속으로서 팀원 간에 불필요한 커뮤니케이션을
최소화하기 위해서 컨벤션을 만드는 것이 일반적으로
떠올릴 수 있는 필요성으로 생각이 든다.
그렇다면 협업을 하지않는다면 컨벤션이 필요없는가?
그렇지않고 생각한다. 결과적으로 일관성을 지키는 것은 전체적인
아키텍처를 구성함에 있어 작업 효율성과 가독성을 증대시키는
효과를 기대할 수 있다.
혼자 프로젝트를 구성하여 서비스를 만든다고 하여도
개발자 커뮤니티에서 전통적으로 활용되는 아키텍처 컨벤션을
이해하며, 납득 가능한 근거를 기반으로 자기만의 컨벤션(기준)을
세워 꾸준히 일관성을 만들어간다면 기본적으로 설계가 빨라지고
유지보수면에서도 큰 이점을 가져올 수 있다.
🐈⬛git-commit-message-conventions
깃허브에 커밋 메시지를 남길 때 또한 컨벤션이 존재한다.
기본적으로 head, body, footer로 구분하여 활용하는데
너무 길어도 좋지 않기 때문에 일반적으로 head만 활용하여
간단명료하게 활용하는 것을 개발자들이 보편적으로
선호하는 방식인 듯 하다.
필자 역시 프로젝트를 만들어 진행할 때 head와 함께
간략하게 이전 코드에서 변경사항을 커밋메시지에 기록하는
방식으로 컨벤션을 꾸준히 지키고있다.
- 커밋 메시지 예시
feat: 알림기능 추가
refactor: 글쓰기 기능 리렌더링 최적화
design: 변경된 디자인 시안 적용
⭐자주 쓰이는 commit message head
- feat: 새로운 기능 추가
- fix: 버그 수정 또는 typo
- refactor: 리팩토링
- design: CSS 등 사용자 UI 디자인 변경
- comment: 필요한 주석 추가 및 변경
- style: 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
- test: 테스트(테스트 코드 추가, 수정, 삭제, 비즈니스 로직에 변경이 없는 경우)
- Chore: 위에 걸리지 않는 기타 변경사항(빌드 스크립트 수정, assets image, 패키지 매니저 등)
- init: 프로젝트 초기 생성
- rename: 파일 혹은 폴더명 수정하거나 옮기는 경우
- remove: 파일을 삭제하는 작업만 수행하는 경우
✍️마치며...
개발자 취준생 초반에는 컨벤션이라는 개념이 없었지만 개인 프로젝트를 진행하며 기능이 많아지고 폴더 아키텍처가 복잡해질수록 프로그래밍을할 때 기준이 필요하다는 것을 깨닫게 되었다.
프로그래밍에도 컨벤션이 있다는 것을 알게되었고 어째서 컨벤션이 이러한 형식으로 이어져왔는지에 대한 공부를 하게 되었고, 이 후 클린코드에 대해서도 알게 되어 코드를 거듭 리팩토링하며 나만의 방식을 찾을 수 있게된 것 같다.
지금은 개발자로 취업하고서 협업을 하면서 컨벤션의 중요성을 뼈저리게 느끼며 팀원 모두가 납득할 수 있는 컨벤션을 제시하고 서로 맞춰가는 것 또한 개발자로서의 중요한 역량 중 하나라는 것을 느끼게 되었다.