哪种方法更好或者分离方法更好?

ade*_*del 4 php oop codeigniter

我正在使用codeigniter.

我有类订单,有一些方法,如start_order(), close_order(),等.

我有每个用户类型的权限级别 'admin','salesman','manager' ..

因此,相同的方法每次都可以得到不同的实现.

所以,我的问题是:这被认为是CI的最佳实践:

1)在'orders'类中创建一个包含不同逻辑细节的大方法.或者
2)在其他课程中根据需要重复该方法.

我知道一个人应该选择第一个选择.但是,当我这样做时,我最终得到了大量代码.所以,这就是我要求你的经历的原因.

Dav*_*vid 7

事实上,人们应该选择第一种选择("一大方法")并不明显.绝对应该避免这种情况.

一般来说,人们应该选择小方法.每个方法都应该完成一件事,只做一件事,只有一个理由可以改变,小而易读,从名称中可以明显看出它在做什么等等.

您在问题中选择的措辞("每次不同的实现"和"包含不同的逻辑细节")意味着您正在谈论一种根据对象的某种状态执行不同操作的方法.

看一下名为Replace Conditional With Polymorphism的重构模式.当您拥有主要是大case检查的方法或if/elseif确定该状态的链时,通常会使用此模式.这个想法是你将每个实现提取到它自己的类中,该类覆盖基类上的方法.这些类将保存并了解状态,并且能够相应地应用正确的逻辑,并且消费代码将仅调用基类类型上的方法.

关于这种模式有很多信息和很多例子.

正如@Gordon所指出的,这也被称为战略模式.