다음과 같은 코드를 보았습니다.
if(statement)
do this;
else
do this;
그러나 나는 이것이 더 읽기 쉽다고 생각합니다.
if(statement){
do this;
}else{
do this;
}
두 방법이 모두 작동하기 때문에 이것이 단순히 선호하는 문제입니까, 아니면 다른 방법보다 권장되는 방법입니까?
답변
첫 번째 버전의 문제점은 중괄호를 추가하지 않고 if 또는 else 절에 두 번째 명령문을 다시 추가하면 코드가 예상치 못한 재미있는 방식으로 중단된다는 것입니다.
유지 관리 측면에서는 항상 두 번째 양식을 사용하는 것이 더 현명합니다.
편집 : Ned는 의견에서 이것을 지적하지만 여기에 링크 할 가치가 있다고 생각합니다. 이것은 단지 상아탑 가상의 헛소리가 아닙니다 : https://www.imperialviolet.org/2014/02/22/applebug.html
답변
명령문 블록을 남기지 않는 데 따른 한 가지 문제점은 else-ambiguity입니다. 그것은 C에서 영감을 얻은 언어는 들여 쓰기를 무시하므로 이것을 분리 할 방법이 없습니다.
if(one)
if(two)
foo();
else
bar();
이것으로부터:
if(one)
if(two)
foo();
else
bar();
답변
내 일반적인 패턴은 한 줄에 맞으면 내가 할 것입니다.
if(true) do_something();
else 절이 있거나 실행하려는 코드 true
의 길이가 상당히 길면 괄호로 묶습니다.
if(true) {
do_something_and_pass_arguments_to_it(argument1, argument2, argument3);
}
if(false) {
do_something();
} else {
do_something_else();
}
궁극적으로, 그것은 주관적인 스타일과 가독성 문제로 귀결됩니다. 그러나 일반적인 프로그래밍 세계는 두 가지로 나뉘어져 있습니다 (중괄호를 사용하는 언어의 경우). 예외없이 항상 사용하거나 예외적으로 항상 사용하십시오. 나는 후자 그룹의 일부입니다.
답변
내가 사용하는 IDE의 코드 포맷터를 사용하고 있습니다. 다를 수 있지만 기본 설정 / 옵션에서 설정할 수 있습니다.
난이게 좋아:
if (statement)
{
// comment to denote in words the case
do this;
// keep this block simple, if more than 10-15 lines needed, I add a function for it
}
else
{
do this;
}
답변
내가 따르는 “규칙”은 다음과 같습니다.
“if”문이 무언가를하기 위해 테스트하는 경우 (IE 호출 함수, 변수 구성 등) 중괄호를 사용하십시오.
if($test)
{
doSomething();
}
어떤 조건에서 어떤 함수가 호출되는지, 프로그램의 흐름이 어디로 가고 있는지 명확히해야하기 때문입니다. 프로그래머가 정확히 어떤 함수가 호출되는지와이 조건에서 어떤 변수가 설정되는지 이해하게하는 것은 프로그램이하는 일을 정확하게 이해하는 데 중요합니다.
루프 또는 함수 내에서 IE 흐름 제어를 수행하기 위해 “if”문이 테스트중인 경우 한 줄을 사용하십시오.
if($test) continue;
if($test) break;
if($test) return;
이 경우 프로그래머에게 중요한 것은 코드를 실행하지 않으려는 예외적 인 경우가 무엇인지 신속하게 발견하는 것입니다. 실행 블록이 아니라 $ test에 모두 포함되어 있습니다.
답변
첫 순간부터 중괄호를 사용하면 이것을 디버깅하지 않아도됩니다.
if (statement)
do this;
else
do this;
do that;
답변
모든 if 문에 간단한 것까지 중괄호를 사용하십시오. 또는 삼항 연산자를 사용하도록 간단한 if 문을 다시 작성하십시오.
if (someFlag) {
someVar= 'someVal1';
} else {
someVar= 'someVal2';
}
다음과 같이 훨씬 멋지게 보입니다.
someVar= someFlag ? 'someVal1' : 'someVal2';
그러나 if / else 블록으로 갈 필요가없는 것이 확실하다면 삼항 연산자 만 사용하십시오!