0

ComboBoxのアイテムがDBキャッシュなどからプルされています。このComboBoxは1つのアセンブリで使用されているため、データのロード方法に関するコードがそのアセンブリにあります。2番目のアセンブリでも同じコンボボックスがあり、同じアイテムを入力する必要があるため、このコンボボックスのアイテムをロードするコードは同じです。

今:新しいアセンブリにそのLoadメソッドをコピーして貼り付けるか、そのアセンブリへの参照を追加して、このメソッドが含まれるクラスのインスタンスを作成してから、そのメソッドを呼び出すことができます。(そのメソッドはそのクラスでは静的ではありません)

どのアプローチを提案しますか?

4

4 に答える 4

4

このシナリオのインスタンスがさらにある場合に、両方のアセンブリで使用できるコードを含む「共有クラス」を作成できるかもしれません。

たとえばShared.PopulateLocatons(cmbLocations)、この関数には場所を設定するためのコードが含まれていますが、任意のアセンブリから呼び出すことができる共有ライブラリの一部ですか?

あなたも必要がなければ、コードを複製する意味はありません:)

于 2012-09-10T15:46:31.863 に答える
4

大まかに言えば、私はDRY(繰り返してはいけない)の原則を支持します。本当に正当な理由がない限り、コードを複製しないでください。コードを配置できるヘルパークラスまたはその他の共有コードデバイスを作成し、両方の場所から呼び出します。このように、変更が加えられた場合、それは1回だけ行う必要があり、3番目/4番目/n番目の使用が必要になった場合、同じコードの3/4/n重複を持つ必要はありません。

于 2012-09-10T15:48:50.367 に答える
1

これは非常に主観的です。1つの方法として、コピーアンドペーストしますが、注意してください。後でそのアセンブリからさらに使用したいことがわかった場合は、参照を追加(およびコピーアンドペーストをリファクタリング)することをお勧めします。

于 2012-09-10T15:44:39.853 に答える
1

両方のアセンブリがまだ使用されている場合(つまり、後で変更される可能性がある場合)、明らかにインポート+同じクラスを使用します。その方法を変更する必要がある場合は、2か所で変更する必要があります。それはメンテナンスの悪夢です。

他のアセンブリが「放棄」されている場合(二度と変更されることはありません)、コードをコピーするだけで解決できると思います。

于 2012-09-10T15:44:53.613 に答える