3진 연산자에 사용하는 코딩 스타일은 무엇입니까?
짧으면 한 줄로 해놨어요.최근에는 이 스타일을 더 길거나 중첩된 3진 연산자 식에 사용하고 있습니다.의도된 예:
$value = ( $a == $b )
? 'true value # 1'
: ( $a == $c )
? 'true value # 2'
: 'false value';
개인적으로 어떤 스타일을 쓰거나 가장 읽기 쉽다고 생각하십니까?
편집: (삼진법 사용 시)
나는 보통 2단계 이상의 3원 연산자를 사용하지 않는다.PHP 템플릿스크립트에서 변수를 에코할 때는 2레벨 if-else보다 2레벨의 deep ternary 연산자를 선호합니다.
삼원 연산자는 일반적으로 피해야 하지만, 이 형식은 상당히 읽을 수 있습니다.
result = (foo == bar) ? result1 :
(foo == baz) ? result2 :
(foo == qux) ? result3 :
(foo == quux) ? result4 :
fail_result;
이렇게 하면 조건과 결과가 같은 선상에 유지되고 무슨 일이 일어나고 있는지 쉽게 파악하고 파악할 수 있습니다.
중첩 조건을 작성하기 위해 3진 연산자를 사용하지 않도록 합니다.가독성이 결여되어 조건부 사용에 대한 추가 가치를 제공하지 않습니다.
한 줄에 들어갈 수 있고 그 의미가 명확할 경우에만 사용합니다.
$value = ($a < 0) ? 'minus' : 'plus';
개인적으로 삼원 연산자는 한 줄에 맞는 경우에만 사용합니다.스판(span)이 필요하다면, 좋은 노인을 위한 시간이야.
if else if else
제가 가끔 쓰는 스타일은 이런 거예요.얘기 안 해서 꺼내는 건데
$result = ($x == y)
? "foo"
: "bar";
하지만 보통 한 줄에 모든 것을 담는 것이 너무 길어질 때만요. 게 것 같아요.= ? :
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
PHP 네스트된 3진 연산자는 다르게 동작합니다.
이 구문은 다음 테스트를 모두 통과합니다.http://deadlytechnology.com/web-development-tips/php-ternary-syntax/ 기반
$myvar = ($x == $y)
?(($x == $z)?'both':'foo')
:(($x == $z)?'bar':'none');
.
참조: http://au.php.net/ternary
예 #3 "Non-officient Ternary Behavior"는 PHP에서 다음 기능이 작동하지 않는 이유를 설명합니다.
$x = 1;
$y = 2;
$z = 3;
$myvar = ($x == $y)
? "foo"
: ($x == $z)
? "bar"
: "none";
$myvar == 'none'; // Good
$x = 1;
$y = 2;
$z = 1;
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";
$myvar == 'bar'; // Good
$x = 1;
$y = 1;
$z = 3;
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";
$myvar == 'bar'; // Bad!
$x = 1;
$y = 1;
$z = 1;
$myvar = ($x == $y) ? "foo" : ($x == $z) ? "bar" : "none";
$myvar == 'bar'; // Bad!
3차 연산자는 if 문을 간단하게 쓰는 데 효과적인 짧은 방법입니다.그것들은 중첩되어 있거나 읽기 어려워서는 안 된다.주의:소프트웨어를 한 번 작성하지만 100번 읽습니다.쓰는 것보다 읽는 게 더 쉬울 거예요.
(a == b) ?1 : 0의 조건을 괄호로 묶는 경향이 있습니다.
나는 공통된 의견에 반대한다.저는 조건 연산자 스타일을 가진 임란과 비슷합니다.한 줄에 딱 맞으면 한 줄에 맞춰요.한 줄에 깔끔하게 들어가지 않는 경우는 구분합니다만, 들여쓰기에는 1개의 탭(스페이스 4개, 탭 스페이스 삽입 VS 설정)만을 사용합니다.나는 바로 달려들지 않는다.if
-else
대부분의 경우 조건부 연산자는 문맥상 더 말이 되기 때문입니다(문맥상 말이 안 된다면 사용하지 않습니다).
또한 조건부 연산자는 사용하지 않습니다.이쯤 되면 읽기가 너무 어렵기 때문에 좀 더 장황하게 이야기를 해야 할 때라고 생각합니다.if
-else
스타일.
삼원조건은 코드를 보다 깨끗하고 우아하게 만들 수 있으며, 가장 중요한 것은 올바른 것에 중점을 두고 반복을 피할 수 있도록 도와줍니다.사용을 검토하되, 그렇게 함으로써 코드 가독성을 떨어뜨리지 않도록 하십시오.VB.NET의 경우:
'before refactoring
If x = 0 Then ' If-Then-Else puts emphasis on flow control
label = "None"
Else
label = Foo.getLabel(x) ' If-Then-Else forces repeat of assignment line
End If
'after refactoring
label = If(x = 0, "None", Foo.getLabel(x)) ' ternary If puts emphasis on assignment
"가독성이 떨어진다"는 것은 "나는 그것을 보는 것에 익숙하지 않다"는 것과 같지 않다는 점에 유의하십시오.
"controllated example"은 들여쓰기를 하는 방법입니다.단, 왼쪽 여백부터 들여쓰기를 합니다.위 행의 위치(또는 다른 행)에 근거하지 않습니다.
3대 악플러에게 가독성이 포인트입니다.더 읽기 쉬운 코드를 만들 수 없다고 생각되면 사용하지 마십시오.하지만 적어도 가끔은 그 반대인 것 같아요.
저는 그것을 사용하지 않아요.작은 소스 == 보다 효율적인 컴파일 코드를 기대하면서 공간을 절약하고 소스 코드를 입력하는 것처럼 느껴졌습니다.
전혀 읽을 수 없다고 생각합니다만, 그 대부분은 전혀 사용하지 않기 때문입니다.
임란, 포맷이 정말 예쁘네요.단, 3진 연산자는 2개 이상 중첩하면 읽을 수 없게 되는 경향이 있습니다.if-contract 블록은 이해하기 쉬운 보금자리 레벨을 추가할 수 있습니다.그 밖에도 함수 또는 테이블 구동 프로그래밍을 사용합니다.
$foo = (isset($bar)) ? $bar : 'default';
개인적으로 사용하는 것은 변수(Java) 할당뿐입니다.예를 들어 다음과 같습니다.
String var = (obj == null) ? "not set" : obj.toString();
및 (기타 예)와 같이 null 파라미터를 허용하지 않는 함수를 사용하는 경우:
String val; [...]
int var = (val == null) ? 0 : Integer.parseInt(val);
만약 그렇다면 삼원 연산자를 전혀 사용하지 않는 경향이 있다.그렇지 않으면 훨씬 가독성이 높아집니다.
언급URL : https://stackoverflow.com/questions/243217/which-coding-style-you-use-for-ternary-operator
'sourcecode' 카테고리의 다른 글
일부 거절당하더라도 모든 약속이 완료될 때까지 기다립니다. (0) | 2022.12.06 |
---|---|
Larabel 5에서 MariaDB를 설정하는 방법 (0) | 2022.12.06 |
2개의 오브젝트 간의 일반적인 딥 디프 (0) | 2022.11.27 |
mysql 데이터베이스에 순위 저장 (0) | 2022.11.27 |
git의 bash 스크립트에 mariadb 자격 증명을 저장하지 않는 방법 (0) | 2022.11.27 |