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;
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 48
aab

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

1年前 评论
  • 1C
  • 2AB都有用
  • 3B
  • 4A
  • 5A
  • 6B(有逻辑处理就A)
1年前 评论
  1. B,比较符合逻辑思维顺序。大家看,看得比较轻松。后续有需要增加代码,也很容易增加。
  2. 看情况,如果后面的语句多,就提前结束,语句少就直接 if 里面写。那个 == 记得写为 ===。
  3. B。简洁。
  4. 第一次看到 B,还不错,可能用这个了。
  5. A。B 听说可以更好,但是少很用。
  6. B。简洁。
1年前 评论

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

1年前 评论

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

1年前 评论
unie (作者) 1年前
kis龍 1年前
kis龍 1年前
DonnyLiu

BABBAB

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

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

2 b

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

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

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

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

1年前 评论

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

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

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

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

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

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

1年前 评论

很反感

if(true)  //这种不带大括号的写法
1年前 评论
  1. B (不要过分追求简洁)
  2. B (提前返回避免不必要的分支)
  3. B (没什么好说的)
  4. A (原因同 1)
  5. AB (如果是使用 ===,则优先选B)
  6. undefined (AB都不选,我会写 return $result == 200
1年前 评论
Junwind
  1. B
  2. 嵌套多就B
  3. 看情况,元素多就B
  4. A (注意这里:A执行了10次,B执行了9次)
  5. A 符合正常逻辑思维
  6. B
1年前 评论

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

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

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

不要过度简洁

1年前 评论

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

1年前 评论

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

1年前 评论

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

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

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

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

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

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

1年前 评论

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

1年前 评论

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

1年前 评论

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

1年前 评论

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

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

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

1年前 评论

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

1年前 评论

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