Является ли встроенный код на ваших страницах aspx хорошей практикой? - PullRequest
7 голосов
/ 16 сентября 2008

Если я использую следующий код, я теряю возможность щелкать правой кнопкой мыши по переменным в коде и реорганизовывать (переименовывать в этом случае) их

<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;

Мне действительно интересно услышать, если люди думают, что вышеупомянутый подход лучше, потому что это то, что я всегда вижу на популярных сайтах и ​​блогах по кодированию (например, Скотт Гатри), и это меньший код, но я склонен использовать ASP.NET, потому что он компилируется и предпочитает знать, если что-то не работает во время компиляции, а не во время выполнения.

Ответы [ 9 ]

4 голосов
/ 16 сентября 2008

Я бы не назвал это плохой практикой (некоторые не согласились бы, но почему они вообще дали нам такую ​​возможность?), Но я бы сказал, что вы улучшите общую удобочитаемость и удобство сопровождения, если не будете придерживаться этой практики. , Вы уже сообщили о хорошем моменте, а именно об ограничении возможностей среды IDE (то есть проверка времени разработки, предупреждение о времени компиляции и т. Д.).

Я мог бы рассказать о том, сколько принципов он нарушает (повторное использование кода, разделение задач и т. Д.), Но я могу вспомнить множество приложений, которые нарушают почти каждый принцип, но все же работают через несколько лет. Я, например, предпочитаю сделать мой код максимально модульным и обслуживаемым.

1 голос
/ 16 сентября 2008

Я пользуюсь им только изредка и вообще по какой-то конкретной причине. Я всегда буду более счастливым разработчиком, если мой код будет полностью отделен от разметки HTML. Это личное предпочтение, но я бы сказал, что это лучшая практика.

1 голос
/ 16 сентября 2008

Он известен как спагетти-код, и многие программисты считают его нежелательным ... и опять же, если вы и другие разработчики в вашей компании находите его читабельным и понятным, кто я такой, чтобы говорить вам, что делать.

Хотя наверняка используйте include для уменьшения избыточности (СУХОЙ - не повторяйтесь)

0 голосов
/ 16 сентября 2008

Обычно я так использую.

<a href='<%# DataBinder.Eval(Container.DataItem,"Id",""/Admin/Content/EditResource.aspx?ResourceId={0}") %'>
0 голосов
/ 16 сентября 2008

Это не так, но иногда это неизбежное зло.

Возьмите для примера ваш пример, хотя в коде, по-видимому, лучше разделять интересы, но проблема в том, что он не может разделить проблемы так ясно, как вы хотите. Обычно, когда мы делаем код, мы не создаем приложения в среде MVC. Код, стоящий за кодом, также нелегко поддерживать и тестировать, по крайней мере, если сравнивать с MVC.

Если вы создаете приложения ASP.NET MVC, то я думаю, что вы наверняка застряли со встроенным кодом. Но построение по шаблону MVC - лучший способ обеспечения удобства сопровождения и тестирования.

Подводя итог: встроенный код не является хорошей практикой, но это неизбежное зло.

Мои 2цента.

0 голосов
/ 16 сентября 2008

Это плохая практика, если вы не можете хорошо ее инкапсулировать.

Как и все остальное, вы можете создавать неприятный, нечитаемый код спагетти, за исключением того, что теперь у вас есть теги к контенту, которые по своей конструкции не являются самыми читаемыми вещами в мире.

Я стараюсь не использовать множество шаблонов if вне шаблона hte, но чрезмерная инкапсуляция приводит к тому, что приходится искать в 13 разных местах, чтобы понять, почему div x не запускается для клиента, поэтому это компромисс.

0 голосов
/ 16 сентября 2008

Если вы думаете об этом с точки зрения разработки шаблонов, то разумно держать это в поле зрения, а не в коде позади. Что делать, если необходимо изменить привязку к элементу списка с ненавязчивым JS для обработки клика? Да, это не лучший пример, а только пример.

Я всегда стараюсь думать с точки зрения того, есть ли у меня дизайнер (HTML, CSS, что угодно), что бы я делал, и что я делал в коде, и как мы не наступали друг на друга пальцы ног.

0 голосов
/ 16 сентября 2008

Я думаю, интересно, что больше asp.net требует кода на страницах aspx. Список просмотра в 3.5, и даже ASP.NET MVC. У MVC практически нет кода, но есть код на страницах для отображения информации.

0 голосов
/ 16 сентября 2008

Это зависит от вас. Иногда «спагетти» код легче поддерживать, чем создавать / использовать полную систему шаблонов для чего-то простого, но как только вы получаете довольно сложные страницы или, более конкретно, как только вы начинаете включать много логики в саму страницу, он может получить грязно очень быстро.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...