Files
jongryangje/docs/개발 규칙/02-코딩컨벤션.md
2026-04-08 00:23:55 +09:00

43 lines
2.2 KiB
Markdown

# 코딩 컨벤션 (Coding Convention)
> PHP 8.2+, CodeIgniter 4 기준. Auth·MemberModel·MemberLogModel 스타일을 따른다.
## 1. PHP 기본
- **네임스페이스**: `App\Controllers`, `App\Models`, `Config` 등 CI4 규칙 준수.
- **클래스명**: PascalCase. 컨트롤러는 단수/역할명(`Auth`, `Home`). 모델은 `~Model` 접미사(`MemberModel`).
- **메서드명**: camelCase. 동사+명사(`showLoginForm`, `findByLoginId`).
- **상수**: 클래스 상수는 `UPPER_SNAKE_CASE` (`MB_STATE_NORMAL`, `LEVEL_SUPER_ADMIN`).
- **private/protected**: 비공개 로직은 `private` 메서드로 분리(예: `buildLogData`, `insertMemberLog`).
## 2. 타입·공백
- 메서드 인자·반환 타입 선언 권장. 예: `function findByLoginId(string $mbId): ?object`, `function buildLogData(string $mbId, ?int $mbIdx): array`.
- 연산자·쉼표 뒤 공백. `if (! $this->validate(...))` 처럼 `!` 뒤 공백.
- 배열 키·값 정렬 시 화살표 정렬로 가독성 유지(선택).
## 3. 네이밍 규칙 요약
| 구분 | 규칙 | 예시 |
|------|------|------|
| 컨트롤러 | PascalCase, 단수/역할 | `Auth`, `Home`, `Admin\User` |
| 메서드 | camelCase | `showLoginForm`, `login`, `create`, `store` |
| 뷰 폴더 | 소문자, 컨트롤러 대응 | `auth/`, `home/`, `admin/user/` |
| 뷰 파일 | 소문자, 언더스코어 가능 | `login.php`, `register.php`, `daily_inventory.php` |
| 라우트 URI | 소문자, 케밥 또는 경로 | `login`, `logout`, `admin/users` |
| 모델 | PascalCase + Model | `MemberModel`, `MemberLogModel` |
| 테이블 | 소문자, 언더스코어 | `member`, `member_log` |
| 테이블 PK | 테이블 약어_idx | `mb_idx`, `mll_idx` |
| 테이블 컬럼 | 테이블 약어_컬럼명 | `mb_id`, `mb_name`, `mll_regdate` |
## 4. 주석
- 클래스 상단·복잡한 비즈니스 로직에 한글 주석 허용. 예: `/** mb_state: 1=정상, 2=정지, 0=탈퇴 */`.
- PHPDoc: `@param`, `@return`, `@var` 등 필요 시 사용.
## 5. Config 참조
- 설정은 `config('Roles')`, `config('App')` 등으로 접근. `config('Roles')->getLevelName($level)` 형태 사용.
이 컨벤션을 지키면 Auth와 동일한 코드 스타일로 유지된다.