7

次のコードを使用すると、コード ビハインド内の変数を右クリックしてリファクタリング (この場合は名前を変更) することができなくなります

<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 など) でいつも目にするのは上記のアプローチの方が優れていると人々が考えているかどうか、非常に興味がありますが、コードが小さいため、私は ASP.NET を使用する傾向があります。実行時ではなく、コンパイル時に何かが壊れているかどうかを知りたいのです。

4

9 に答える 9

4

私はそれを悪い習慣とは呼びません (同意しない人もいますが、そもそもなぜそのオプションを提供したのでしょうか?)、しかし、この慣習に従わなければ、全体的な読みやすさと保守性が向上すると言えます。あなたはすでに良い点を伝えました。それは IDE 機能の制限です (つまり、設計時の検査、コンパイル時の警告など)。

どれだけ多くの原則 (コードの再利用、関心の分離など) に違反しているかについてはいくらでも説明できますが、ほぼすべての原則に違反しているものの、数年後も機能するアプリケーションが世の中にたくさんあると思います。私は、自分のコードをできるだけモジュール化して保守しやすいものにすることを好みます。

于 2008-09-16T01:25:32.170 に答える
1

これはスパゲッティ コードとして知られており、多くのプログラマーはそれを好ましくないと感じています... もう一度言いますが、もしあなたやあなたの会社の他の開発者がそれを読みやすく保守しやすいと思ったら、私はあなたに何をすべきか教えてくれません。

確かに、includes を使用して冗長性を減らします (DRY - 繰り返さないでください)。

于 2008-09-16T01:25:40.113 に答える
1

私はたまにしか使いませんが、一般的には何らかの理由で使用します。コードが HTML マークアップから完全に分離されているので、私はいつもより幸せな開発者になります。これは個人的な好みですが、これはより良い方法だと思います。

于 2008-09-16T02:22:47.010 に答える
0

テンプレート開発の観点から考えると、コードビハインドではなく、ビューに保持するのが賢明です。クリックを処理するために、アンカーから控えめなJSのリストアイテムに変更する必要がある場合はどうなりますか?はい、これは最良の例ではなく、単なる例です。

私はいつもデザイナー(HTML、CSSなど)がいるのか、彼に何をしてもらうのか、背後のコードで何をするのか、そしてどうすればお互いの足を踏まないのかを考えようとしています。

于 2008-09-16T02:33:36.453 に答える
0

あなたがそれをうまくカプセル化できないならば、それはただ悪い習慣です。

他のすべてのように、あなたは厄介で読めないスパゲッティコードを作成することができますが、今ではコンテンツへのタグがありますが、これは設計上、世界で最も読みやすいものではありません。

私は大量のifをテンプレートから外そうとしていますが、カプセル化が多すぎると、13の異なる場所を調べて、div xがクライアントに起動しない理由を確認する必要があるため、トレードオフになります。

于 2008-09-16T02:36:41.190 に答える
0

It's not, but sometimes it's a necessary evil.

Take your case for an example, although code behind seems to have a better separation of concern, but the problem with it is that it may not separate out the concerns as clearly as you wish. Usually when we do the code behind stuff we are not building the apps in MVC framework. The code behind code is also not easy to maintain and test anyway, at least when compare to MVC.

If you are building ASP.NET MVC apps then I think you are surely stuck with inline code. But building in MVC pattern is the best way to go about in terms of maintainability and testability.

To sum: inline code is not a good practice, but it's a necessary evil.

My 2cents.

于 2008-09-16T02:45:23.150 に答える
0

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

<a href='<%# DataBinder.Eval(Container.DataItem,"Id",""/Admin/Content/EditResource.aspx?ResourceId={0}") %'>
于 2008-09-16T07:36:00.847 に答える
0

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

于 2008-09-16T02:16:34.483 に答える
0

それはあなた次第です。「spagehetti」コードは、簡単なことのために完全なテンプレート システムを構築/使用するよりも保守が簡単な場合がありますが、かなり複雑なページを取得すると、より具体的には、ページ自体に多くのロジックを含め始めると、次のようになります。本当にすぐに汚れます。

于 2008-09-16T01:30:09.320 に答える