1. helper 类型的函数整理成类相比而言最好写: helper函数互相之间通常不用共享数据. 而一组helper函数通常对相同类型的数据提供协助。即他们不共享数据值而加强了这个类型的功能。所以只要类里主要存放一个变量,类型为大家都协助的那个数据类型,即可。
f1( L, a,b ) f2( L, c, d) ->
class HelperL:
def f1(self,a,b): pass
def f2(self,c,d): pass
2. 互相之间互相有协作关系的比较复杂。一些变量是用户最初的输入和最后能取得的变量,一些是方法之间共享的变量。最初的输入可能来自用户,给出不同的初始数据;也可能来自程序员,定制实例的不同属性。 方法间共享的变量通常不想对用户开放,想要在用完之后就销毁。而子方法甚至用不到最初的输入和最后的输出,只操作了中间值。当中间值不能简单地作为参数在方法间传递时,只能考虑在类里面保存这个中间的变量。这样增加了方法之间的耦合性,因为对中间值的操作必定在这一组函数间有某协定。
3. 当要给类更多的扩展性时,要设计好哪些是“虚拟”方法,哪些是底层的根据情况用来协助的方法。通过不同的子类来定制具体的行为。
如果要通过类的属性变量设置,还是设计好“虚拟”方法,其中代码不要添加很多复杂度,却能够通过检查属性变量来定制操作。