PHP代码风格探讨

下面的一些代码风格你更喜欢哪种呢?

1.

if (!empty($foo)) $data['foo'] = $foo; // A

if (!empty($foo)) {
    $data['foo'] = $foo; // B
}

!empty($foo) && $data['foo'] = $foo; // C

2.

// A
foreach ($list as $item) {
    if ($item['status'] == true) {
        // ...
    }
}

// B
foreach ($list as $item) {
    if ($item['status'] == false) {
        continue;
    }

    // ...
}

3.

// A
$data = [];
$data['a'] = 1;
$data['b'] = 1;

// B
$data = [
    'a' => 1,
    'b' => 1,
];

4.

// A
$count = 0;
while ($count < 10) {
    // ...
    $count++;
}

// B
$count = 0;
while (++$count < 10) {
    // ...
}

5.

// A
if ($result == true)

// B
if (true == $result)

6.

// A
if ($result == 200) {
    return true;
}
return false;

// B
return $result == 200 ? true : false;
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 48
aab

感觉代码风格的本质目的就是让写人的不费劲,同时更让读的人不费劲。按照这个规则来说,肯定是怎么容易理解怎么写。特别是对于 利用短路赋值,容易带来问题的单行 if,我个人是不推荐的。

2年前 评论
  1. B,比较符合逻辑思维顺序。大家看,看得比较轻松。后续有需要增加代码,也很容易增加。
  2. 看情况,如果后面的语句多,就提前结束,语句少就直接 if 里面写。那个 == 记得写为 ===。
  3. B。简洁。
  4. 第一次看到 B,还不错,可能用这个了。
  5. A。B 听说可以更好,但是少很用。
  6. B。简洁。
2年前 评论
  1. B (不要过分追求简洁)
  2. B (提前返回避免不必要的分支)
  3. B (没什么好说的)
  4. A (原因同 1)
  5. AB (如果是使用 ===,则优先选B)
  6. undefined (AB都不选,我会写 return $result == 200
2年前 评论

PSR 不看,非得自己搞一套代码风格

2年前 评论

1,B (超反感A写法) 2,B (复杂的业务时可以减少很多if嵌套) 3,B (有些情况还是会用A的) 4,A (不知道还有B这种写法) 5,B (这个评论区有老哥说了) 6,B (B写法用得比较多)

2年前 评论

1.C 有时候也会写成这样empty($foo) || $data['foo'] = $foo

2.A 有时候也会用B,但大部分时候使用的A

3.B 初始声明数组的时候都是用的B

4.A 习惯了逻辑执行完再++

5.B 防止少打=吧 :joy:

6.B 我应该比较会写成return $result == 200;

2年前 评论

我一般这样写 $foo or $data['foo'] = $foo

2年前 评论

自己写着不费劲,读的人也容易,就是好代码。

2年前 评论

哪里适合就用哪个,便利优先. 以第一种为例:单行的判断用A方法; 超过单行用B方法。所以我的代码会出现多张方式并存的方式

2年前 评论

PSR规范跟代码简洁之道,我基本上参考遵守这两个,laravel的话就是社区站长文档的那个。

2年前 评论
Sher (作者) 2年前
Sher (作者) 2年前
sunxyw
  1. B
  2. B
  3. B
  4. A
  5. A
  6. B (或者直接写 $result === 200
2年前 评论

CBBBB 6: return $result === 200就行了

2年前 评论

!empty($foo) && $data['foo'] = $foo; 同事用挺多这种的

2年前 评论
chowjiawei

babaaa 简洁易读 的代码 才是好代码 并且要符合psr规范

不要过度简洁

2年前 评论
  1. C 或者 empty(foo) || $data[‘foo’] = $foo;
  2. B 禁止用A
  3. A
  4. B
  5. 不选,双等换三等 或者删 == true (没意义)
  6. return result === 200
2年前 评论

6的B再简短点 把3元去掉

2年前 评论
Junwind
  1. B
  2. 嵌套多就B
  3. 看情况,元素多就B
  4. A (注意这里:A执行了10次,B执行了9次)
  5. A 符合正常逻辑思维
  6. B
2年前 评论

很反感

if(true)  //这种不带大括号的写法
2年前 评论

第一个肯定是B,好理解,好修改,好叠加代码

2年前 评论
fatrbaby

这个东西不用探讨了,psr已经是被广为接受且最好的规范了。

2年前 评论
忆往昔弹指间 (楼主) 2年前
fatrbaby (作者) 2年前
忆往昔弹指间 (楼主) 2年前

第一个的 !empty($foo) && $data['foo'] = $foo; // C 还可以写成 empty($foo) || $data['foo'] = $foo;

第六个直接 return $result == 200; 不就好了 ……,如果需要用到严格判断就用恒等于。

2年前 评论
忆往昔弹指间 (楼主) 2年前

1 b (其他的特殊情况使用)

2 b

3 b (条件允许的情况,我会在定义数组的时候之间赋值)

4 b (很简单,可用直接看到循环条件,不用再去找了)

5 b (以前我用a,后来用b,因为简单直接,可用看到值,主要是有部分情况变量名比较长,或者有多个条件判断)

6 b (只有在需要其他操作的情况下会用a,比如在返回 false 之前要做某些操作)

2年前 评论
DonnyLiu

BABBAB

2年前 评论
DonnyLiu (作者) 2年前

CBBBBB 其他是为了简洁,第五个可以避免少写等于号导致的问题

2年前 评论
unie (作者) 2年前
kis龍 2年前
kis龍 2年前

这几种写法我都能看懂,所以都行。而且各大框架好像都有相同或者不同的写法都会有。自己写aaaaab

2年前 评论
  • 1C
  • 2AB都有用
  • 3B
  • 4A
  • 5A
  • 6B(有逻辑处理就A)
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!