1

我目前正在重构一些丑陋的代码,并将一个大型且过于复杂的 A 类拆分为具有子类 B 和 C 的超类 A。

我的问题是,如果我在拆分后仅与子类 B 相关的过于复杂的类中有私有变量,是否有一个普遍接受的约定来声明这些变量?

我的选择是:

protected variable in superclass A
pro: all variables located in central location
con: some variables in superclass unused by all subclasses

private variable in subclass B
pro: only shared variables present in superclass A (more "proper"?)
con: more complicated code management

谢谢你的时间!

4

3 回答 3

4

我的问题是,如果我在拆分后仅与子类 B 相关的过于复杂的类中有私有变量,是否有一个普遍接受的约定来声明这些变量?

如果它们仅与 B 类相关,则将它们放在 B 类中。做任何其他事情,都会降低代码的可读性,并且会在未来造成混乱。

如果你想证明你对某人的回答是合理的,你可以指向关注点分离 (SoC),它解决了你的拆分类。

于 2012-05-29T15:21:03.430 回答
2

@Ramhound 是对的:变量应该在需要它的类中

A - variables that are shared by both C and B
B - variables that belongs to B only
C - Variables that belongs to C only
于 2012-05-29T15:24:33.820 回答
1

绝对将它们放在子类 B 中,您应该将方法放在它们都继承自的类中的唯一原因是如果两者都将使用该方法,或者很可能在不久的将来会添加另一个类并将使用这些方法,属性,字段或在您的情况下变量

于 2012-05-29T15:25:07.687 回答