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;
关于 LearnKu
高认可度评论:
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'] = $foo2.A 有时候也会用B,但大部分时候使用的A
3.B 初始声明数组的时候都是用的B
4.A 习惯了逻辑执行完再++
5.B 防止少打
=吧 :joy:6.B 我应该比较会写成
return $result == 200;我一般这样写
$foo or $data['foo'] = $fooBBBAAB
自己写着不费劲,读的人也容易,就是好代码。
来学习下
哪里适合就用哪个,便利优先. 以第一种为例:单行的判断用A方法; 超过单行用B方法。所以我的代码会出现多张方式并存的方式
PSR规范跟代码简洁之道,我基本上参考遵守这两个,laravel的话就是社区站长文档的那个。
$result === 200CBBBB 6:
return $result === 200就行了!empty($foo) && $data['foo'] = $foo; 同事用挺多这种的
能跑就行🤣