三元运算符使用哪种编码风格?[关闭]

2020/11/03 14:21 · php ·  · 0评论

如果很短,我将其放在一行中。最近,我一直在将这种样式用于较长或嵌套的三元运算符表达式。一个人为的例子:

$value = ( $a == $b ) 
            ? 'true value # 1'
            : ( $a == $c )
                ? 'true value # 2'
                : 'false value';

您个人使用哪种样式,或者最易读?

编辑:( 关于何时使用三元运算符)

我通常避免使用2个以上级别的三元运算符。当我在PHP模板脚本中回显变量时,与2级if-else相比,我倾向于2级深度三元运算符。

通常应避免使用三元运算符,但是这种形式可以很容易理解:

  result = (foo == bar)  ? result1 :
           (foo == baz)  ? result2 :
           (foo == qux)  ? result3 :
           (foo == quux) ? result4 : 
                           fail_result;

这样,将条件和结果保持在同一行上,就可以轻松浏览并了解正在发生的事情。

我尽量不要使用三元运算符来编写嵌套条件。它缺乏可读性,并且比使用条件语句没有任何额外的价值。

仅当它可以放在一行中并且它的含义很清楚时,我才使用它:

$value = ($a < 0) ? 'minus' : 'plus';

就个人而言,我只在三行运算符适合一行的情况下使用它。如果需要跨度,那么该是个好时机了

if else if else

有时会使用的一种样式,因为没有被提及,所以我提出来的样式是这样的:

$result = ($x == y)
        ? "foo"
        : "bar";

..但通常仅将所有内容放在一行上会使其过长。我发现= ? :所有的排列使它看起来更整洁。

PHP嵌套三元运算符的行为有所不同。

此语法通过了以下所有测试。基于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“非显而易见的三元行为”说明了以下原因在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!

三元运算符是编写简单if语句的有效方法。它们不应嵌套或难以阅读。切记:您只编写一次软件,但被读取100次。它应该比阅读容易阅读。

我倾向于将条件放在括号中:(a == b)?1:0

我不同意这种普遍看法。我的条件运算符风格有点像Imran。如果整齐地放在一行上,我将其放在一行上。如果它不能完全适合一行,我会破坏它,但是我只使用一个制表符(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

请注意,“可读性较差”与“我不习惯看到它”不同。

我不使用它。在我看来,它总是想节省空间并输入源代码,而期望小型源==更有效的编译代码。

我觉得它根本不可读,但这主要是因为我从未使用过它。

我倾向于根本不使用三元运算符,因为我发现..否则更具可读性。

伊姆兰,您已经用漂亮的格式格式化了。但是,当您嵌套两个以上时,三元运算符的确会变得不可读。if-else块可能会为您提供更高级别的可理解嵌套。除此之外,使用函数或表驱动的编程。

$foo = (isset($bar)) ? $bar : 'default';

我个人仅使用它来分配变量(在Java中),例如:

String var = (obj == null) ? "not set" : obj.toString();

和(其他示例)在使用不允许使用空参数的函数时,例如:

String val; [...]
int var = (val == null) ? 0 : Integer.parseInt(val);
本文地址:http://php.askforanswer.com/sanyuanyunsuanfushiyongnazhongbianmafenggeguanbi.html
文章标签: ,   ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!