问答 / 1 / 33 / 创建于 2年前
写代码 if else 用的太多怎么办? 大部分代码都用了if 这个正常吗? 是不是比较初级呀
正常
看看能不能进行归类使用switch php8以上可以改用match我也是最近才改过来的,可以省很多东西
switch
match
if ( in_array($order->status,[4,5,9,10])){ switch($order->status){ case 4: $msg = '当前订单已完成,订单不可取消!'; break; case 5: $msg = '取消订单已完成,不可重复取消!'; break; case 9: $msg = '商品返回途中,暂时不可取消!'; break; case 10: $msg = '订单商品已返还,订单不可取消!'; break; default: $msg = '订单状态异常,请刷新后再试!'; } return response()->json(['status'=>'error', 'code'=>1,'msg'=>$msg]); }
if (in_array($order->status,[4,5,9,10])){ $msg = match ($order->status) { 4 => '当前订单已完成,订单不可取消!', 5 => '取消订单已完成,不可重复取消!', 9 => '商品返回途中,暂时不可取消!', 10 => '订单商品已返还,订单不可取消!', default => '订单状态异常,请刷新后再试!', }; return response()->json(['status'=>'error', 'code'=>1,'msg'=>$msg]); }
$msg = $data[$status] ?? "订单状态异常,请刷新后再试!";
这样不是也行
if (in_array($status, [4, 5, 9, 10])) { $data = [ 4 => '当前订单已完成,订单不可取消!', 5 => '取消订单已完成,不可重复取消!', 9 => '商品返回途中,暂时不可取消!', 10 => '订单商品已返还,订单不可取消!' ]; $msg = array_get($data, $status, "订单状态异常,请刷新后再试!"); return response()->json(['status' => 'error', 'code' => 1, 'msg' => $msg]); }
不可避免的时候我都是能不用else就不用else,维持正常流程的代码在最外层,根据条件直接return
设计模式,多了解一下
很正常的,写多了自己就知道怎么优化了,楼上说的switch php8的match也是一种方式, 有的也可以用return、异常的方式终止向下执行减少if层级, 楼上的switch的写法也还好 我一般会定义常量类用于定义各种类型啥的,比如
用数组 key => value
if 嵌套的层次尽可能不要超过三层, 否则代码的可读性性很差, 不利为维护if中逻辑复杂的话 可以考虑 <多态> 重构下代码if中逻辑简单的话 说明你应该优化逻辑代码, 比如switch替换if, if中是否有重复的判断,php语法规则(三联运算符等)
OOP,设计模式呀。
正常啊,许多底层composer包内都是这么用,不信你看些知名的包。
简单点的,这种
$status_text = $statusArr[$status] ?? '订单无效';
策略模式
问这种问题,没有示例的嘛?要针对性来解答问题,泛泛而谈没意思
常用in_array switch match 来替代ifelse
不要优化优化优化都没代码了,怎么体现
return 要趁早 codedecoupled.com/return-early.htm...
我记得10年前有个项目经理讲师给我们培训,就提过圈复杂度的概念,计算方法很简单,建议楼主可以搜索学习。
我印象里记得他说当时给一个芬兰公司做 Java 语言开发的项目,当时的项目经理就要求函数内的代码不得超过 25 行。他跟我们讲,PHP 的代码应该更容易达到这个要求。
Java
PHP
我要举报该,理由是:
正常
看看能不能进行归类使用
switch
php8以上可以改用match
我也是最近才改过来的,可以省很多东西switch
match
不可避免的时候我都是能不用else就不用else,维持正常流程的代码在最外层,根据条件直接return
设计模式,多了解一下
很正常的,写多了自己就知道怎么优化了,楼上说的switch php8的match也是一种方式, 有的也可以用return、异常的方式终止向下执行减少if层级, 楼上的switch的写法也还好 我一般会定义常量类用于定义各种类型啥的,比如
用数组 key => value
if 嵌套的层次尽可能不要超过三层, 否则代码的可读性性很差, 不利为维护
if中逻辑复杂的话 可以考虑 <多态> 重构下代码
if中逻辑简单的话 说明你应该优化逻辑代码, 比如switch替换if, if中是否有重复的判断,php语法规则(三联运算符等)
OOP,设计模式呀。
正常啊,许多底层composer包内都是这么用,不信你看些知名的包。
简单点的,这种
策略模式
进行消除问这种问题,没有示例的嘛?要针对性来解答问题,泛泛而谈没意思
常用in_array switch match 来替代ifelse
不要优化优化优化都没代码了,怎么体现
return 要趁早 codedecoupled.com/return-early.htm...
我记得10年前有个项目经理讲师给我们培训,就提过圈复杂度的概念,计算方法很简单,建议楼主可以搜索学习。
我印象里记得他说当时给一个芬兰公司做
Java
语言开发的项目,当时的项目经理就要求函数内的代码不得超过 25 行。他跟我们讲,PHP
的代码应该更容易达到这个要求。