2008-09-16 17 views
7

私はどこにでもこの練習を見aspxページのインラインコードは良い方法ですか?私は、次のコードを使用している場合

<a href='<%# "/Admin/Content/EditResource.aspx?ResourceId=" + Eval("Id").ToString() %>'>Edit</a> 

それらを(この場合は名前を変更)の背後にあるコード内の変数の上で右クリックし、リファクタリングする能力を失うが、それは私のように私には奇妙なようですプロパティ名を変更してもコンパイル時エラーが発生しなくなりました。 私の好ましいアプローチは、この

<a runat="server" id="MyLink">Edit</a> 

ような何かをすることであり、人々はそれは常に何私ですので、上記のアプローチが優れていると思えば、その後

MyLink.Href= "/Admin/Content/EditResource.aspx?ResourceId=" + myObject.Id; 

の背後にあるコードでは、私は聞いて本当に興味よく使われるコーディングサイトやブログ(Scott Guthrieなど)を参照してください。これは小さいコードですが、コンパイルされているため、実行時ではなくコンパイル時に何かが壊れているかどうかを知ることができます。

答えて

4

私はそれを悪い習慣と呼んでいません(いくつかは同意しませんでしたが、なぜ彼らは最初にそのオプションを与えましたか)。しかし、これに従わないと全体的な可読性と保守性が向上します練習。あなたはすでに良い点を伝えています。それはIDE機能の制限(つまり、設計時点検、コンパイル時の警告など)です。

違反の原則(コードの再利用、懸念の分離など)は何度も繰り返すことができますが、ほぼすべての原則を破り、数年後にはまだ動作する多くのアプリケーションが考えられます。私は、私のコードをモジュール化し、できるだけ保守性のあるものにすることを好みます。

+0

"しかし、なぜ彼らは最初にそのオプションを私たちに与えましたか?"それがASP 3.0のやり方ですVB.NETのベニヤをC#で作成する理由はあります。マイクロソフトは、後方互換性と以前のメンタルモデルの維持について深刻な懸念を抱いています。 ASP 3のようなコードを書くことは、必ずしも良い考えではありません! – ruffin

1

スパゲッティコードとして知られていて、多くのプログラマーがあなたの会社の読者と他の開発者が読みやすく保守的であると感じたら、あなたは何をすべきか教えてください。しかし、使用は冗長性(DRY - 自分を繰り返さない)を低減するために含まれることを確認するために

0

それはあなた次第です。時には "スパゲッティ"コードは、単純なもののテンプレートシステムを構築/使用するよりも保守が容易ですが、かなり複雑なページを取得したり、ページ全体に多くのロジックを組み込むと、本当に汚い。

0

もっとasp.netがaspxページにコードを必要としているのは興味深いと思います。 3.5のリストビュー、さらにはASP.NET MVC。 MVCには基本的にコードがありませんが、情報をレンダリングするためにページにコードします。

1

私はそれを時折のみ使用し、一般的には何らかの理由で使用します。私は自分のコードをHTMLマークアップから完全に分離して、常に幸せな開発者になるでしょう。それはやや個人的な好みですが、これはより良い方法であると言います。

0

テンプレートの開発という点では、コードの背後にではなく、ビューに保存することをお勧めします。クリックを処理するために邪魔にならないようにアンカーからリストアイテムに変更する必要がある場合はどうなりますか?はい、これは最良の例ではなく、むしろその例です。

私はデザイナー(HTML、CSS、何か)を持っているかどうか、私は彼が何をしているのか、コードの背後で何をやっているのだろうと思っています。他のつま先

0

これをうまくカプセル化できない場合は、唯一の悪い習慣です。

他のすべてのものと同様に、世界で最も読みやすいものではない内容のタグが付いていることを除いて、厄介な、読めないスパゲッティコードを作成することができます。

私は試してテンプレートのうちの何百ものものを保持していますが、過剰なカプセル化は、div xがクライアントに発射されない理由を見るために13の異なる場所を見なければならないため、そのトレードオフです。

0

そうではありませんが、時にはそれが必要な悪です。

例を挙げておきますが、コードの後ろには懸念があるようですが、問題は明らかに懸念事項を明確に分けられないことがあります。通常、私たちは物事の背後にあるコードを実行するとき、私たちはMVCフレームワークでアプリケーションを構築していません。コードビハインドコードは、少なくともMVCと比較して、とにかく保守してテストするのも簡単ではありません。

ASP.NET MVCアプリケーションをビルドする場合は、インラインコードが確実に固まっていると思います。しかし、MVCパターンを構築することは、メンテナンス性とテスト容易性の点で最善の方法です。

合計:インラインコードは良い習慣ではありませんが、必要な悪です。

私の2セント。

0

通常、私はこのように使います。

<a href='<%# DataBinder.Eval(Container.DataItem,"Id",""/Admin/Content/EditResource.aspx?ResourceId={0}") %'> 
関連する問題