일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 트랜젝션
- 유효성
- sendmail
- 자바스크립트
- 문자열
- ping
- JavaScript
- 더존ERP
- 핑
- python
- erp
- 메일
- js
- 정규표현식
- MYSQL
- crontab
- 이메일주소
- pingtest
- codeigniter
- jquery
- 정규식
- MSSQL
- port
- vscode
- 포트
- 리눅스
- 목차만들기
- sp_who
- 핑테스트
- php
Archives
- Today
- Total
ioerror
[공통] 코딩컨벤션 (Coding Convention) 본문
반응형
클래스
클래스명은 첫번째 문자는 대문자인 카멜케이스로 한다.
예 : HelloWorld
함수(메쏘드, 맴버함수)
소문자로 시작하는 카멜케이스를 사용한다.
예 : goLoginForm()
변수
맴버변수인 경우 소문자로 시작하는 카멜케이스,
일반 변수인 경우 소문자의 스네이크케이스를 사용한다.
예 : stLogin
예 : st_login
상수
대문자로만 이루어진 스네이크케이스를 사용한다.
예 : TABLE_MEMBER
<?php
/**
* 기본적으로 phpDocumentor 의 주석 규칙을 따른다.
* @link https://docs.phpdoc.org/latest/references/phpdoc/index.html
* php 파일의 시작은 <?php 로 시작한다.
* php 파일의 끝이 php 코드가 마지막이면 ?> 로 닫지 않아도 된다.
* 파일의 첫번째 주석은 해당 파일의 설명을 기록한다.
*/
/** @var 와 같이 phpDoc의 태그가 들어가는 한 줄 주석은 여러줄 주석 형식으로 한다. */
/** @link https://docs.phpdoc.org/latest/glossary.html#term-phpdoc */
// 태그가 들어가지 않는 주석을 슬래시 2개로 한다.
/**
* phpDoc 태그 목록은 아래의 주소를 참고 한다.
* @link https://docs.phpdoc.org/latest/references/phpdoc/tags/index.html
* @link https://docs.phpdoc.org/latest/guides/docblocks.html#list-of-tags
*/
/**
* 아래부터는 php 코드를 통한 예시이다.
*
* 가상의 회원관리 클래스를 예를 들어 주석 및 코딩규약을 설명한다.
* 이 주석은 php 문서의 첫 부분에 위치하여 문서를 설명하는 것이다.
*
* @package ZOO
* @author Dev Team
* @since 2020-02-01 마지막 수정일과 간단한 수정 내용 및 목적
*/
/**
* 네임스페이스는 PSR-4를 따른다.
* @link https://psr.kkame.net/accepted/psr-4-autoloader
* \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
*/
namespace Member
/**
* 상수는 대문자의 스네이크케이스를 사용한다.
* php7에서는 define("TBL_MEMBER", array(...)); 형식으로도 사용 가능하다.
* 짧은 배열선언도 가능하다 const ARR = [....]
*/
define("TBL_MEMBER","member");
const MEMBER_FIELDS = array(
"mem_pk"
,"mem_id"
,"mem_nm"
);
const LOGIN_STAT = false;
/**
* 클래스 등의 맴버변수를 제외한 일반 변수는 소문자의 스네이크케이스를 사용한다.
*/
$mem_nm = "test";
/**
* 구조적요소(Structural Element)의 중괄호는 한줄 내림한다.
* 구조적요소 : class, interface, abstarct, trait, function, property, constant
* 인터페이스 및 추상화는 접미사로 각각 Insterface, Abstract를 추가한다.
*/
interface MemberInterface
{
/**
* 인터페이스 및 클래스의 메소드와 일반 함수는 소문자로 시작하는 카멜케이스를 사용한다.
* 맴버함수의 반환값 자료형을 명시한다.
*/
public function loginStat(): bool;
/**
* 메소드, 함수의 인자값은 자료형을 명기한다.
*
* @param int $mem_pk 회원 PK
* @param string $mem_nm 회원 ID
*
* @return array 회원 정보
*/
public function memberInfo(int $mem_pk, string $mem_id = null): array;
public static function myInfo(): array;
}
namespace Member
/**
* 인터페이스 선언되어 있으면 구현을 하라... 뭔 개소리야?
*/
class Member implements MemberInterface
{
/**
* 로그인 여부.
*
* @var bool
*/
public $loginStat = false;
/**
* 맴버변수와 맴버함수(메소드)는 소문자로 시작하는 카멜케이스를 사용한다.
* @var array
*/
public $memberInfo = array();
/**
* 로그인 한 회원 정보
*
* @var array
*/
public static $myInfo = array();
/**
* 생성자
*
* @param array $config
*/
public function __construct($config)
{
}
/**
* 로그인 여부
*
* @return bool
*/
public function loginStat(): bool
{
/**
* 모든 제어문의 중괄호는 같은 라인에 입력한다.
* else if 대신 elseif 를 사용한다.
* else와 중괄호 사이에는 공백을 입력한다.
* 한줄에 많은 조건을 표기하기 어려우면 여러줄로 나누어 표기 가능하되 논리 연산자는 앞에 둔다.
*/
if ($this->loginStat === true){
return $this->loginStat;
} elseif (
$this->loginStat == true
&& LOGIN_STAT === false
)
{
return $this->loginStat = false;
} else {
return $this->loginStat;
}
/**
* @todo 추가해야할 코드를 todo 키워드로 입력 가능하다.
*/
$loginchk = true;
/**
* 삼항연산자는 연산자별로 띄어쓰기를 한다.
*/
return $this->loginStat = $loginchk === true ? true : fase;
}
public function memberInfo(): array
{
}
}
반응형
'개발이야기' 카테고리의 다른 글
VSCode 자주 사용하는 단축키 - 커서 이동, 선택, 복사 (0) | 2021.05.22 |
---|---|
자주 사용하는 VSCODE 확장 플러그인 (0) | 2021.05.19 |
Coding Convention (0) | 2020.04.29 |
코딩컨벤션 (Coding Convention) (0) | 2019.11.22 |
Comments