首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是‘best’最佳做法

是‘best’最佳做法
EN

Stack Overflow用户
提问于 2012-10-06 10:35:43
回答 5查看 201关注 0票数 0

我在http://www.php.net/manual/en/function.str-split.php#78040偶然看到了这个脚本

代码语言:javascript
复制
   /**
     Returns a formatted string based on camel case.
     e.g. "CamelCase" -> "Camel Case".
    */
    function FormatCamelCase( $string ) {
            $output = "";
            foreach( str_split( $string ) as $char ) {
                    strtoupper( $char ) == $char and $output and $output .= " ";
                    $output .= $char;
            }
            return $output;
    }

古玩部分是:

代码语言:javascript
复制
strtoupper( $char ) == $char and $output and $output .= " ";

我的问题

  • strtoupper( $char ) == $char and $output and $output .= " ";的详细分解及其有效性的原因
  • 这不适用于breakreturnecho,但它适用于包括print在内的任何函数。
  • 这是最佳实践吗?
  • 这样的代码有什么优点或缺点吗?
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-10-06 10:38:58

这和

代码语言:javascript
复制
if (strtoupper( $char ) == $char) {
    if ($output) {
         $output .= " ";
    }  
}

对于代码A and B,如果A被求值为true,则将执行A

&&and的区别是&&优先于and.=优先于and

票数 4
EN

Stack Overflow用户

发布于 2012-10-06 10:49:49

评估

正如其他答案所指出的,每个后续语句只在前面的statement==true被执行时才会执行。

这在代码中更相关,比如: if(foo和bar) { //do }

如果是foo==false,那么就没有必要浪费时间评估栏了。

我不能说我在布尔逻辑之外的优势是使用短路评估,而且为了让其他程序员看我的代码,我可能现在就不会开始了。

票数 4
EN

Stack Overflow用户

发布于 2012-10-06 10:41:24

代码语言:javascript
复制
  strtoupper( $char ) == $char and $output and $output .= " ";

是一种短手,如果它首先检查它是否是大写字符,如果是,他将转到下一个,检查$output是否为空,然后向$output添加一个空格。

这不是最佳实践,但使用一行感觉很酷。

好处是它很酷,缺点是你需要反复阅读才能理解它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12759011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档