2

asp.net プロジェクトを継承しましたが、コード ビハインド ページに多くのビジネス ロジックが含まれていることがわかりました。

ほとんどの場合、大規模なリファクタリングを試みるよりも、動作するコードをそのままにしておく方がよいと判断しました。ただし、バッチ処理用のコマンド ライン ユーティリティで再利用できる機能を実行するページがあります。これらのページにエネルギーを集中して、ビジネス ロジックをリファクタリングし、他のユーティリティでそれを参照したいと思います。

私は現在、コード ビハインドに 6200 行のコードがあるこの特定のページをリファクタリングしようとしています。私が見つけたのは、コードビハインドとページ固有のオブジェクトの間の依存関係を見つけようとするのは非常に面倒な作業です。

これらの依存関係を体系的に見つけて攻撃できるツール、VS 機能、または方法を誰かが知っているかどうか疑問に思っています。ViewState、テキストボックス、パネル、ドロップダウンリストなどを参照するコードの領域を識別できるようにするため、これらの参照をメソッドパラメーターに移動し、最終的にこの機能をページクラスから移動できます。

4

3 に答える 3

3

単一責任の原則に従っていない方法を調べることから始め、従うようにそれらを分解します。それが完了すると、コードが何をするかを把握し、コードをより簡単にグループ化し、必要なオブジェクトを作成するグループ専用のクラスに移動できるようになります。ReSharperは、これらすべてを行うのに役立つ非常に便利なツールであることがわかりました。最終的には、リファクタリングを成功させる前に、コード内の基礎をしっかりと把握する必要があります。

私たちは皆、ある時点でそこに行ったことがあり、あなたは私の最も深い同情を持っていますが、あなたがそれを試みる意欲があるということは、あなたがすでに正しい方向に向かっていることを意味します. 幸運を!

于 2009-10-28T22:19:47.847 に答える
0

うわー、まずここでごめんなさい。コードビハインドに6000行のコードを入れる人は誰でも叩かれるに値します:)

今、私は以前にこの種のリファクタリングを行ったことがあります。私はいくつかのステップでこれに取り組みます:

(1) 論理領域 #Region および #EndRegion を作成する - Save Methods 、Load Methods または (2) ビジネス層でこれらの領域に基づいて物理ビジネス オブジェクトを作成できるかどうかを確認する (3) 完了したら、すべてのコードを参照するだけです適切なクラスに。

これをすべて解消するためのツールが必要なのは理解していますが、これを行うと、ひしゃくで穴を掘ることになるのではないかと心配しています。コードを理解し、メソッドごとに移動すると、理解が深まります。

于 2009-10-28T21:28:08.123 に答える
0

私がすぐに考えることができる 1 つの方法は、コンパイルしてからアセンブリにし、 NDependを使用してアセンブリを分析することです。

http://www.ndepend.com/Features.aspx#DependencyCycle

代替テキスト
(ソース: ndepend.com )

于 2009-10-28T18:42:41.327 に答える