私は現在いくつかのリファクタリング(新機能の追加)をいくつかのフレームワーククラスに行っています。状況は、私たちが分裂したい論理の束をする単一の(神のような)クラスを持っていることです。クラスは、会計コードの検証ルールのようなものを表します。それで、人の名前、誕生日などの検証を行います。リファクタリング:ネストされたクラスまたは別のクラス?
私がしようとしているのは、単一のルールで分割することです。基本的には、会計コードに対して人のファーストネームを検証するルールです。誕生日など。最後のプログラマーにとっては、ほぼ同じように見えます。 FiscalCodeルールの巨大なコンストラクタを呼び出す代わりに、彼はFiscalCode.GetRules(...)
のような何かを行い、ここでパラメータを渡します。 GetRules(...)
は内部的に単一のルールを構築し、配列として戻します。それは私たちのために完全にうまく、正しいです。
今私の質問は次のとおりです。 FiscalCodeクラス(現在の強力なgodクラス)は、私が作成しようとする単一の "ルールクラス"の多くで必要となる多くのユーティリティメソッドを持っています。私が知っているのは、GetRules(...)
のことをするためにFiscalCodeクラスがまだ必要なことです(これはプログラマーにとっては何となく変わりません。まったく新しいことをする必要はありません)。
- がの内部にネストしたクラスとして私の新しいルールのクラスを作成しますFiscalCodeクラスのパブリック静的なユーティリティメソッドを私の新しいルールのクラスを作成し、アクセス:
私は私の心に来て、2つのオプションがありFiscalCodeクラスst私は既にユーティリティメソッドにアクセスしています(したがって、私のユーティリティメソッドを公開する必要はありません)
私はすでにお気に入りですが、最初にあなたの意見を聞きたいと思います。
Thxを
これらはユーティリティメソッドですが、FiscalCodeルールのグループ内でのみ使用されます。だから公に公開することは問題ではないが、実際には正しいとは言えない。ネストされたクラスでは、FiscalCodeルールのプライベート静的メソッドに直接アクセスできました。 – Juri