我有一个函数,基本上,它执行以下操作:
启动变量->while
循环->将结果存储在数据库中。
但是,由于我项目的各个部分都使用了这个函数,我不得不为每一步添加回调函数,给自己一些灵活性。
我当前的实现如下所示:
function doStuff(arg1, arg2, $callbacks = array())
{
//Init vars
$var1 = ...
$var2 = ...
$callbacks['onStart']();//callback..
//Loop:
while(....)
{
$callbacks['afterCycle']; //callback after each loop.
}
//Database storage.
$this->store($data);
$callbacks['onEnd'](); //callback...
}
但是我目前对该函数的实现并不令人满意,我认为维护代码并不容易,如果我想创建另一个类似的函数(init->loop->storage),我会重复自己,而我的代码会不一致,例如当前的循环后回调函数称为“afterCycle”,但对于另一个函数,它可以称为“afterLoop”,这会使我的代码不一致,更难理解。
我目前对此的想法是创建一个类,将这些回调函数存储在预定义的公共字段中,因此名称是不可更改的,并且该函数doStuff
将强制传递该回调类的对象。我还不确定这个新实现是否有任何好处,这就是我在这里问的原因。
我想到的新实现如下所示:
function doStuff(arg1, arg2, Callback $callbacks)
{
//Init vars
$var1 = ...
$var2 = ...
$callbacks->onStart();//callback..
//Loop:
while(....)
{
$callbacks->afterCycle(); //callback after each loop.
}
//Database storage.
$this->store($data);
$callbacks->onEnd(); //callback...
}