2013-05-07 1 views
4

PHP에서 중괄호는 이 아님을 알고 있습니다. 하나의 명령문 조건문에 대해이 필요합니다. 그러나 이 질문은 좋은 코딩 스타일에 관한 것입니다. (물론 스타일에 대해 이야기 할 때 일반적으로 프로젝트 내에서 일관성있는 스타일을 사용하는 것이 좋지만이 질문에 대해서는 무시하십시오.)PHP에서는 짧은 조건문에서도 중괄호를 사용해야합니까?

다음과 같이 중괄호 안에 조건문을 묶는 것이 더 나은 형태입니까? 또는 간단한 조건에서 브래킷을 사용하지 않는 것이 더 좋습니다 (예 : 더 깨끗한 경우).

예 : 이 :

if (!file_exists($templatefile)) { 
    throw new Exception('Template file does not exist'); 
} 

나이 :

if (!file_exists($templatefile)) 
    throw new Exception('Template file does not exist'); 

이에 대한 공통의 일관된 모범 사례가 있습니까, 아니면 그냥 개인적인 선호에 달려있다?

+1

스틱 중괄호를 사용합니다. 나중에 후회하지 않겠습니다. – asprin

+1

잠시 동안 나는이 모든 괄호를 사용하도록 현재 프로젝트를 변환했습니다 (당연히 루프와 동일). 나는 이것이 가독성이 좋고 당연히 잠재적 오류를 예방한다고 생각한다. – Aquillo

+2

[Zend] (http://framework.zend.com/manual/1.12/en/coding-standard.coding-style.html#coding-standard.coding-style.control-statements.if-else-elseif), [Pear] (http://pear.php.net/manual/es/standards.control.php), [cakePHP] (http://book.cakephp.org/2.0/en/contributing/cakephp-coding-conventions .html # control-structures) ... 일반적인 합의 여기 : 항상 중괄호를 사용하십시오. –

답변

10

나는 중괄호를 사용하지 않고 나중에 명령을 추가하고 그것을 감싸는 것을 잊어 버린 사람들이 너무 많은 실수를 저지른 것을 보았습니다.

내 태도는 가독성과 향후 확장 성을 위해 포장하는 것입니다.

+0

예, 이건 내 생각 일 것입니다.인클루드가 나머지 코드와 일치하지 않으므로 우발적 인 문제와 디버깅 문제가 발생할 수 있습니다. –

+1

[PHP 표준 권장 사항] (http://net.tutsplus.com/tutorials/php/psr-huh/)에서도 [PSR-2 5. 제어 구조 섹션] (https : // github. * "각 구조의 몸체는 중괄호로 묶어야합니다. 이것은 표준화되어 있습니다 (예를 들어, 구조가 어떻게 보이는지, 그리고 새로운 라인이 추가 될 때 오류가 발생할 가능성을 줄입니다. "*이 정보가 귀하의 답변에 포함될 수 있습니까? –

0

개발자마다 개발자에 따라 다릅니다. 코드에서 하나의 코드를 따르십시오. 나중에 문제가 생길 수 있습니다.

2

좋은 코딩 스타일의 한 가지 규칙은 다음과 같습니다. 산만 함을 피하십시오. 이 가 주관입니다

if (!file_exists($templatefile)) { 
    throw new Exception('Template file does not exist'); 
} 

은 물론 (하지만 귀하의 질문에 문제의), 모든 프로그래머 : - 그래서이 할 수있는 일반적인 방법 가진 단일 또는 mutliple 라인의 regarless하는 길을 가야하는 것입니다 그건 정신이 산만 해. 하지만 사실, 버전 관리 시스템이 될 것입니다. 단일 행 if 블록을 여러 행으로 변경해야하는 경우 if 조건을 터치해야합니까? 지옥 아니, 바뀌지 않았으니, 그렇지? 그러나 괄호를 사용하지 않으면 해당 줄을 터치해야합니다. 그것이 내가 산만 함이라고 부르는 것입니다. 그래서 이것은 덜 주어진 주관적인 인수입니다.

상상할 수있는 것처럼, 코드를 디버그해야 할 때와 같이 다양한 접근법을 조장 할 수있는 다른 인수가 있습니다. 다양한 변경 등을 위해 하나에서 다중 라인으로 전환해야 할 때와 같습니다. 전체 코드베이스, if 블록이면 if 블록입니다. 재미를 위해

, 블록 "경우"를 항상 던져 :`좋은 '안녕, 프로그래밍 practices`의 규칙에

if (!file_exists($templatefile)); { 
    throw new Exception('Template file does not exist'); 
}