简化复杂的类层次结构
为了让代码能被多次使用,我创建了一个比较复杂的类结构来写我的Python代码。大概是这样的:
class ElectionMethod
class IterativeMethod
class SNTV
...
class NonIterativeMethod
class OrderDependent
class CambridgeSTV
...
class OrderIndependent
class WIGM
class ERS97STV
...
class Recursive
class MeekSTV
...
只有这个类结构的最底层部分会被实例化成对象。这样做确实能提高代码的重用性,但代码本身变得很复杂(有些类有20个左右的方法),而且因为层级很多,找某个功能的实现位置会很耗时间。
我尝试把一些功能提取出来,放到一个单独的对象里,但我发现这样做并不好,因为几乎所有的功能都依赖于一些共同的数据。也就是说,我可以把一些代码移动到另一个对象,但它仍然需要回到那个复杂的类结构中去获取所需的数据,所以这并不是真正的封装。
有没有人能给点建议,让这个结构更容易管理呢?
3 个回答
2
如果你遇到的唯一问题是找不到某个东西是在哪里实现的,也许你不需要重构代码。你可以试着寻找你当前编辑器的扩展功能,或者换一个支持跳转到定义的编辑器。
比如,安装了 ropemacs 的 emacs 编辑器,当光标放在一个对象名称上并按下 Ctrl-c g
时,就可以直接跳转到这个对象的定义。
如果你使用 vi/vim,肯定也有类似的技巧可以用。