변수, 객체, 배열을 구문해서 코딩하는 헝가리안 표기법
변수가 특정 용도로만 쓰이면 헝가리안 표기법이 딱 맞는데 현실은 그렇지 않기 때문에 오히려 혼동이 생길 수 있습니다.
그렇기 때문에 확실하게 타입이 정해진 경우만 사용하는 편입니다.
보통 저 같은 경우는 배열과 객체 정도는 구분을 하기 위해서 사용하는 편이라고 볼 수 있습니다.
● 시스템 헝가리안 표기법
- i, s, a, b 등의 접두사가 붙어 변수의 자료형을 명확히 보여주는 형태로 표현 하는것
// 정수 (i)
$iUserId = 1001;
// 문자열 (s)
$sProductName = "무선 키보드";
// 배열 (a)
$aProductList = ['Item A', 'Item B'];
// 불리언 (b)
$bIsActive = true;
// 실수 (f)
$fTaxRate = 0.15;
if ($bIsActive) {
$iTotalItems = count($aProductList) * $iUserId;
echo "제품명: {$sProductName}, 세금율: {$fTaxRate}\n";
}
● 앱스 헝가리안 표기법
- id, cnt, max, url 등의 논리적 목적을 나타내도록 하는것
// 식별자 (id) - 정수형이든 문자열이든 '식별자'라는 논리적 역할을 강조
$idTransaction = "TX987654";
// 개수 (cnt) - 변수가 '개수'를 의미함을 강조
$cntRecords = 50;
// 최대값 (max) - 변수가 '최대 한계'임을 강조
$maxPageSize = 20;
// URL (url) - 변수가 'URL 주소'임을 강조
$urlRedirect = "/dashboard/index.php";
if ($cntRecords > $maxPageSize) {
echo "총 {$cntRecords}개의 레코드가 있으며, 최대 페이지 크기는 {$maxPageSize}입니다.\n";
header("Location: " . $urlRedirect);
}
요즘은 변수명을 뭔지 명학하게 알 수 있도록 주석이 필요 없을 정도로 변수명을 짓습니다.
코볼 사용하는것도 아닌데 변수나 함수명만 봐도 뭐하는지 알 수 있도록 만든것이 좋겠습니다.
* 장점
- 코드 읽을 때 변수의 타입이나 역할을 빠르게 알 수 있음.
- 팀 코딩 시 일정 규칙을 유지할 수 있음.
* 단점
- PHP 같은 동적 언어에선 타입이 언제든 바뀔 수 있어 접두어와 실제 값이 불일치할 수 있음.
- IDE와 타입 힌트, 주석, 네이밍 규칙이 발전하면서 꼭 필요하지는 않음.
- 오히려 변수명이 길어지고 가독성이 떨어질 수 있음.
