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 に答える