0

非常に複雑になった「Web ユーザー コントロール」を別のスタンドアロンの「サーバー コントロール」プロジェクトに移行して、コードをリファクタリングしようとしています。さらに、コントロールには内部にいくつかの JavaScript ロジックもあります。

そこで、次の点についてアドバイスをお願いします。

  1. Web ユーザー コントロールから既存の JavaScript ロジックを配置 (移行) する方法と場所は?
  2. ASP.netページの既存のjavascriptを論理的かつきれいに分離する方法は? ディレクトリ構造の提案は高く評価されます。

超初心者なのでよろしくお願いします。

敬具

4

1 に答える 1

1

この質問に対する答えは長く複雑で、ケースによって異なります。それでも、このようなコードベースに取り組んできて、私が学んだことがいくつかあります:

  1. テストを書く: あらゆるレガシー コードベースに不可欠です。コードを変更する前にテストを作成する必要があります。あなたが言うようにそれが密接に結合されている場合、テストを書かないと、変更の小さな副作用が本番環境に忍び寄り始めたときに、プロジェクトに2か月かかることになります.

  2. javascript を邪魔にならないようにする: すべての javascript を .js ファイルに入れ、サーバーや構造から離します。これにより、サーバー側のコードを記述する際に心配することが 1 つ少なくなります。

  3. 分割して征服する: これはおそらく誰にでもできる最高のヒントです。私はかつて、5000 のコード ライン ファイルを含むプロジェクトに取り組んだことがあり、html、javascript、およびビジュアル ベーシックがすべて 1 つの醜い混乱の中に混在していました。そこで、これらの巨大なクラスを 100 行のファイルに抽出することで、各ブロックの意図をよりよく理解し、重複を簡単に見つけることができることを知りました。

  4. BA を手元に用意してください。Web ページ / クラス全体が非常に壊れている場合があり、その一部を書き直すことが保守可能な状態に戻す唯一の方法です。ビジネスロジックを説明できる人がいることは、特にこのような状況では非常に重要です。クラスが何をすべきか、なぜそれを行うのか、どの部分が廃止されているかを教えてくれるからです。私が話していたこの同じプロジェクトで、特定のページを書き直し始めました。学士号を取得したおかげで、コードの約 30% を削除することができました。25 万行のコードベースで 30% の作業を行うことは、特に締め切りが迫っている場合に非常に役立ちます。

  5. Web コントロールを使用しないでください。html / jquery とハンドラを使用してください。asp.net Web コントロールは、Web 標準では適切に機能しません。それらは ajax とうまく機能せず、SPA 指向のアプローチとうまく機能しません。これに向けてリファクタリングしている場合は、Web コントロールを HTML 入力に相当するものに置き換えてから、JavaScript (jQuery、ext/sencha、dojo など) を使用して目的の動作を追加します。サーバー上で、AJAX で呼び出すことができるハンドラーを作成できます。

  6. 単独で行うべきではありません。使用するロードマップとパターンを設定するアーキテクトがいるチームの一員になる必要があります。javascript、html、およびいくつかの .Net を知っているフロントエンド開発者。c# と .Net だけでなく、SQL Server またはデータベース テクノロジを知っているバックエンド開発者と、html5 と css を知っているデザイナーであるため、ドキュメントを構造化するためのより良い方法を提案できます。

  7. おそらく、これをまったく行うべきではありません。あなたが言うような初心者であれば、適切に作成された Web プロジェクトに取り組み、正しいコードの書き方を学ぶべきです。もちろん、あなたを侮辱するつもりはありませんが、これは途方もない仕事であり、多くの複雑さとたくさんの落とし穴があります。これらのプロジェクトは通常、過去 10 年間の初めに VB6 プログラマーによって開発されたアプリであり、Web の時流にできるだけ早く乗り込みました。コーダーは OOP についてあまり知りませんでした (それに直面してみましょう。ほとんどの VB 開発者は、少なくとも ASP.net が最初に登場したときは知りませんでした)。担当者は経験豊富なASPです。

于 2013-10-02T17:32:06.603 に答える