2

私の上司は自分自身をオブジェクト指向の達人と見なしていますが、私は彼を趣味のプログラマーと見なしています。彼は私たちのSage開発を担当し、クライアントのSageインストールにカスタム要件を追加します。彼は最近、リフレクションに非常に興奮しています。彼は、コード内のSageのアセンブリをリフレクションし、プライベートメンバーとイベントハンドラーを変更しています。これは良い考えではないと思いましたが、彼はセージがそれができるのは素晴らしいと思ったと言って私を撃墜しました。これは非効率的であり、実装を変更するとコードが崩壊する可能性があるため、これは悪い習慣だと思いました。私は通常、開発者が理由で何かをプライベートにしたということですか?

これに関する一般的なルールは何ですか?

これがばかげた質問のように思われる場合は、多くの感謝と謝罪。

ポール

4

3 に答える 3

4

あなたが正しいです。サードパーティのライブラリの実装の詳細に依存している場合は、サードパーティのライブラリが更新されたときにすべてを書き直し、プライベート変数を「無害な」値で変更したときの予期しない副作用に備えて、すべてを書き直す準備をしておくことをお勧めします。

答えは、自分がしていることに 100% 確信があり、結果に直面する準備ができている場合にのみ実行することです。

于 2010-09-01T10:34:49.393 に答える
2

既存のアセンブリを変更しないでください。結果は不明である可能性が高く、アセンブリ ベンダーによってサポートされていないことは明らかです。また、このような変更により、アセンブリがベンダーによって出荷されたバージョンであることを保証するアセンブリの署名が失われます。

基本的に、どんなことでも起こる可能性があるため、非常に厳密なテストを行い、頼りになるベンダーのサポートがない場合を除き、十分に離れてください!

于 2010-09-01T10:36:13.727 に答える
1

アセンブリの新しいバージョンごとに、完全に異なる実装を持つことができます。Sage からのソフトウェア アップデートは、Boss のコードを完全に無効にする可能性があり、同じ機能を再構築するには完全な再開発が必要になります。

実際の例: StringBuilder.NET 3.5 ではstring内部的に使用され、.NET 4 では、char[]この最近の質問を参照してください。)

于 2010-09-01T10:53:31.497 に答える