我试图弄清楚是否有任何情况绕过DRY编码,因为它可以避免大的查询/功能。
基本上,我可以在每次需要时计算变量(学生的财务余额)或将其存储为单个变量,并在每次付款时更新该变量。我的猜测是,即使它通过一千次付款循环,最好每次计算以保持干燥。但更重要的是这种情况,因为数据库调用或更复杂的操作可能会占用更多的时间或处理速度。
示例php代码:
$payments = array(
array(
'plan' => 100,
'fees' => 0.10,
'paid' => 110
),array(
'plan' => 100,
'fees' => 0.05,
'paid' => 105
),array(
'plan' => 100,
'fees' => 0.15,
'paid' => 115
),
);
function calculate_balance($payments){
$max = count($payments);
$balance = 0;
for($i=0;$i<$max;$i++){
$balance = ($payments[$i]['plan'] * (1 + $payments[$i]['fees'])) - $payments[$i]['paid'];
}
return $balance;
}
// either save balance as a varaible and only adjust when new payment made...
// or calculate the balance every time it's needed
是否存在我应该存储变量而不是每次都计算它的情况?
非常感谢!
答案 0 :(得分:2)
每次计算它的问题当然是性能。
仅更新先前结果的问题是正确性。 如果出现问题,你就不一定知道。
两种方法都是使用更新方法,但偶尔会从头开始重新生成。 在此过程中,您可以判断更新的值是否错误,并使用它发出警告以尝试找出错误。
答案 1 :(得分:1)
首先,让它工作。如果代码没有给出正确的答案,那么代码的速度并不重要。
然后,测量一下它需要多长时间。这花了太长时间?如果没有,那么你没有什么可以优化的。
如果您需要加速代码,那么您必须使用代码分析器进行测量,以找出代码的哪些部分花费的时间最长。对于PHP,请使用XDebug。