【发布时间】:2020-05-22 04:34:57
【问题描述】:
我有一个使用 Laravel 框架的应用程序,有一些条件规则我不知道什么是最好的编码和维护方式。
用例:有条件地应用促销代码
- 可以在特定日期或日期范围内应用促销代码
- 订单可使用促销代码 >= $100
- 可以为特定项目申请促销代码
- ...
基本的解决方案是编写多个 IF ELSE 语句来逐一检查。例如:
if ($promo->specific_date) {
}
elseif ($promo->date_range >= 'date' && $promo->specific_date <= 'date') {
}
if ($totalAmount < 100) {
// Dont allow
}
if (! $promo->allowed_items) {
// Dont allow
}
// More conditions ...
我可以看到代码在测试和维护时会出现问题。
所以我想知道是否有更好的方法来处理这个问题?例如。使用 OOP 方式?
P/S:澄清我的用例:
- 我需要通过所有规则才能使促销有效
- 我正在考虑创建一个规则模型,以便我可以有一个 CRUD 来管理它们,并且在后端,我可以运行一个查询来获取所有规则,然后调用一个类来管道并检查每个规则......(不确定这是好主意还是坏主意)
谢谢,
【问题讨论】:
-
据我所知
switch比if快 -
不同促销代码的规则是否不同(我的意思是,您是否有多个促销代码)?我假设是的,但以防万一。
-
@NipunTharuksha I'm doubtful of that. 在任何情况下,在它们之间做出决定时,性能应该无关紧要。
-
@Jeto 感谢您指点我以便更好地理解。请您检查一下switch vs if else
-
嗯,关键是使用内联 IF 和/或 SWITCH 难以阅读和消化;这就是我试图避免的。
标签: php laravel if-statement switch-statement conditional-statements