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;
高认可度评论:
BBBAAB
BBBAAB
感觉代码风格的本质目的就是让写人的不费劲,同时更让读的人不费劲。按照这个规则来说,肯定是怎么容易理解怎么写。特别是对于 利用短路赋值,容易带来问题的单行 if,我个人是不推荐的。
这几种写法我都能看懂,所以都行。而且各大框架好像都有相同或者不同的写法都会有。自己写aaaaab
php-cs-fixer
CBBBBB 其他是为了简洁,第五个可以避免少写等于号导致的问题
全是B
BABBAB
1 b (其他的特殊情况使用)
2 b
3 b (条件允许的情况,我会在定义数组的时候之间赋值)
4 b (很简单,可用直接看到循环条件,不用再去找了)
5 b (以前我用a,后来用b,因为简单直接,可用看到值,主要是有部分情况变量名比较长,或者有多个条件判断)
6 b (只有在需要其他操作的情况下会用a,比如在返回 false 之前要做某些操作)
1B 2B 3B 4B 5A 6B
第一个的
!empty($foo) && $data['foo'] = $foo; // C
还可以写成empty($foo) || $data['foo'] = $foo;
。第六个直接
return $result == 200;
不就好了 ……,如果需要用到严格判断就用恒等于。这个东西不用探讨了,psr已经是被广为接受且最好的规范了。
第一个肯定是B,好理解,好修改,好叠加代码
很反感
===
,则优先选B)return $result == 200
)6的B再简短点 把3元去掉
== true
(没意义)babaaa 简洁易读 的代码 才是好代码 并且要符合psr规范
不要过度简洁
1.A 2.B 3.B 4.A 5.A 6.B
CBBAAB
PSR 不看,非得自己搞一套代码风格
1,B (超反感A写法) 2,B (复杂的业务时可以减少很多if嵌套) 3,B (有些情况还是会用A的) 4,A (不知道还有B这种写法) 5,B (这个评论区有老哥说了) 6,B (B写法用得比较多)
1.C 有时候也会写成这样
empty($foo) || $data['foo'] = $foo
2.A 有时候也会用B,但大部分时候使用的A
3.B 初始声明数组的时候都是用的B
4.A 习惯了逻辑执行完再++
5.B 防止少打
=
吧 :joy:6.B 我应该比较会写成
return $result == 200;
我一般这样写
$foo or $data['foo'] = $foo
BBBAAB
自己写着不费劲,读的人也容易,就是好代码。
来学习下
哪里适合就用哪个,便利优先. 以第一种为例:单行的判断用A方法; 超过单行用B方法。所以我的代码会出现多张方式并存的方式
PSR规范跟代码简洁之道,我基本上参考遵守这两个,laravel的话就是社区站长文档的那个。
$result === 200
CBBBB 6:
return $result === 200
就行了!empty($foo) && $data['foo'] = $foo; 同事用挺多这种的
能跑就行🤣