PHP Zend Framework编码标准,哪种更易读?

ere*_*non 7 php zend-framework coding-style

这是一个主观问题,我需要您对编码标准和格式化实践的感受和想法.

PHP Zend编码标准要求编写多行函数调用,如下所示:

$returnedValue = $object->longMethodName(
    $argument1,
    $otherArgument,
    42
);
Run Code Online (Sandbox Code Playgroud)

我认为以下方法更具可读性:

$returnedValue = $object->longMethodName($argument1,
                                         $otherArgument,
                                         42);
Run Code Online (Sandbox Code Playgroud)

因为左侧只有一行,这表明这只是一个语句,参数更接近方法名称.

更喜欢哪一个?

edo*_*ian 14

第二种方法为您留下一个额外的问题:行长度.Zend编码标准建议"任何PHP代码行的最大长度为120个字符."

这意味着如果你想要好的(长的,描述性的)变量名称,并且碰巧有一个用于返回值,对象,一个好的命名函数和一个长参数,你更有可能达到120个字符限制.

除此之外,根据您的标准,最大长度可能只有80个Chars或介于两者之间.

另外,如果重复使用,我喜欢第一个更好

$returnedValue = $object->longMethodName(
    $argument1,
    $otherArgument,
    42
);
$returnedValue = $object->longMethodName(
    $argument1,
    $otherArgument,
    42
);
$returnedValue = $object->longMethodName(
    $argument1,
    $otherArgument,
    42
);
$returnedValue = $object->longMethodName(
    $argument1,
    $otherArgument,
    42
);

$returnedValue = $object->longMethodName($argument1,
                                         $otherArgument,
                                         42);
$returnedValue = $object->longMethodName($argument1,
                                         $otherArgument,
                                         42);
$returnedValue = $object->longMethodName($argument1,
                                         $otherArgument,
                                         42);
$returnedValue = $object->longMethodName($argument1,
                                         $otherArgument,
                                         42);
Run Code Online (Sandbox Code Playgroud)

就像佩卡说的那样,少了眼睛跳跃.


Pek*_*ica 10

我更喜欢第一种方法.后者需要更多的打字,并且更加紧张眼睛IMO.我认为眼睛 - 至少是人类的"西方",从左到右的阅读部分 - 当到达当前的那一行时往往会跳到下一行的开头,并且有太多的空白区域跳过第二个例子.它可能在语义上不是100%正确,但提供了良好的阅读流程.