각종 코딩 권장 사항 및 도구들 정보
각종 코딩 권장 사항 및 도구들본문
# PHP - PSR
코딩 컨벤션과 몇가지 구조의 인터페이스 규격이 정의되어 있죠.
인터페이스 규격은 많지는 않고 사용할 일은 사실 많지 않지만 프레임워크류에서는 광범위하게 사용하고 있습니다.
주로 보면 좋을건 역시 코딩 컨벤션이죠. https://psr.kkame.net/accepted/psr-12-extended-coding-style-guide
# PHPDoc
이미 많이 사용하고 있는 `/** ... */` 형태로 사용하는 주석 블럭이죠.
각종 에디터에서도 지원하고 위 링크의 phpDocumentor 등의 도구를 통해 자동으로 API 문서를 만들어줍니다. 유사한 다른 툴도 있고요.
에디터에서 phpdoc 에 파라미터 타입이나 리턴타입 등을 정의해두면 에디터에서 타입 검사를 해주기도 하고요. 이미 오래된 규칙입니다.
PSR에서도 이를 표준화를 진행하고 있기는한데 꽤 오래전에 시작된 건데도 아직 정식 표준안으로 채택되지는 않았습니다.
# JavaScript
이 역시 광범위하게 사용되는 JS 코딩 컨벤션입니다.
# CSS
CSS는 딱히 공통된 규칙보다는 제각각이긴한데 보통 들여쓰기는 공백 2개, 하이픈(`-`) 사용 정도가 보편적인 것 같네요.
# EditorConfig
단순하지만 유용한 규칙들을 가지고 있죠.
들여쓰기 문자와 갯수, 줄끝 공백제거 같은 간단한 규칙을 제공하고 각종 에디터에서도 기본으로 이 룰을 사용하거나 플러그인을 제공하고 있죠.
# Prettier
CSS, JS, HTML 등의 코드 포맷터입니다.
위에 있는 각종 권장되는 규칙을 기반으로 코드를 포맷해주는 도구입니다.
이것도 여러 에디터에서 플러그인으로 사용할 수 있죠.
# PHP CS Fixer
PHP는 Prettier로만 사용하기는 조금 부족해서 이걸 사용해도 좋습니다.
규칙을 매우 상세하게 정할 수 있어서 라이믹스의 코딩 컨벤션도 맞추는데 도움이 될 수 있습니다.
PSR 등 내장된 룰셋을 이용할 수도 있고요.
경로를 지정하여 대량으로 파일을 자동으로 고칠 수도 있죠. 주로 그렇게 사용하는 툴이고요.
# PHPStan
PHP 정적 분석도구입니다.
보통 에디터에서도 경고나 오류를 잡아주지만 이런 도구들은 조금 더 상세한 리포트를 보여줍니다.
리포트 레벨을 정할 수 있고 세부 규칙도 커스텀 할 수 있습니다.
저는 보통 6 레벨로 사용하는데 타입이 지정되지 않은 파라미터나 리턴타입을 지정하도록 경고하고 체크도 해줍니다.
CLI에서 사용할 수 있지만 이 역시 에디터 플러그인으로 사용할 수도 있습니다.
이와 유사한 Psalm 같은 툴도 있습니다.
# 유의적 버전(Semantic Versioning. semver)
버전명 표기 규칙이 정의되어 있습니다.
아주 광범위하게 이 규칙을 따르고 있죠.
# Conventional Commits
커멧 메시지를 명확히하고 semver 규격에 맞춰 자동으로 버전 번호를 올려주는 도구도 활용할 수 있습니다.
커밋 메시지 앞에 `fix: 버그 수정`처럼 fix, feat 같은 타입을 지정하는 방식으로 아주 간단한 규칙입니다.
아래 툴을 사용하면 커밋 메시지를 추려서 CHANGELOG.md 파일에 커밋 목록을 만들어 줍니다.
- https://github.com/conventional-changelog/standard-version
- https://cluster-taek.tistory.com/entry/Git-Versioning-및-CHANGELOGmd-생성-자동화
이것과는 관계 없지만 이모지를 활용한 재밌는 커밋메시지를 작성하는 방법도 있습니다.
재미로 잠시 사용해봤는데 이모지 고르는거 은근히 귀찮네요^^
---
이것들은 반드시 따라야 할 표준 규칙은 아닙니다.
권장사항 정도로 생각하면 좋고, 표준은 아니지만 많은 프로젝트에서 이런 규칙을 사용하고 있기 때문에 사실 표준, 보편적인 규칙이라서 적용이 어렵지 않다면 이런 규칙을 적용하면 많은 사람들이 알아보고 쉽게 따를 수 있겠습니다.
더 있을텐데 일단 기억나는 것만 적어봤습니다.
9
댓글 4개
이 많은 것을 알고 계시다니 대단하십니다~!
저는 그냥 eslint 통해서 airbnb-base 규칙만으로 코딩하고 있네요 ㅠㅠ
덕분에 많이 알아갑니다 감사합니다 : )
좋은정보 감사합니다. 도움이 되겠습니다!!
MSA 가 활성화 되면서 대부분 퇴색되긴 했죠^^
온프래미스에 모놀로식 개발을 할때는 상당히 중요했었습니다.
요즘은 IDE에서 자동으로 다 맞춰주니 더 신경 안쓰게 되더라구요