Советы, как избежать образования большого комка грязи с помощью ASP.NET WebForms
Вопрос
Хотя ASP.NET В наши дни MVC, похоже, пользуется большой популярностью, веб-формы по-прежнему довольно распространены.Как вам удается поддерживать разумность вашего проекта?Давайте соберем здесь несколько советов.
Решение
- Создавайте веб-пользовательские элементы управления для всего, что будет отображаться более чем на одной странице, которая не является частью содержимого типа masterpage.Пример:Если ваше приложение отображает информацию о продукте на 10 страницах, лучше всего использовать пользовательский элемент управления, который используется на 10 страницах, а не повторять отображаемый код 10 раз.
- Добавляйте в код как можно меньше бизнес-логики.Лежащий в основе код должен быть перенесен на ваш бизнес-уровень для выполнения работы, которая напрямую не связана с размещением чего-либо на странице и отправкой данных туда и обратно с бизнес-уровня.
- Не изобретайте велосипед заново.Многие неаккуратные кодовые узлы, которые я видел, состоят из кода, который выполняет то, что уже предоставляет фреймворк.
- Как правило, избегайте блоков скрипта в html.
- Не заставляйте одну страницу делать слишком много вещей.Что-то, что я видел снова и снова, - это страница, на которой, как говорят, есть режимы добавления и редактирования.Это прекрасно.Однако, если у вас есть много подрежимов для добавления и редактирования, вам лучше иметь несколько страниц для каждого подрежима с возможностью повторного использования через пользовательские элементы управления.Вам действительно нужно избегать использования множества вложенных "если", чтобы определить, что пытается сделать ваш пользователь, а затем показывать правильные вещи в зависимости от этого.Ситуация быстро выходит из-под контроля, если ваша страница имеет много возможных состояний.
- Изучите жизненный цикл страницы и используйте его в своих интересах.Многие уродливые страницы с привязкой к коду, которые я видел, могли бы быть чище, если бы программист лучше понимал жизненный цикл страницы.
Другие советы
Обычно я стараюсь держаться от этого подальше...но когда я использую WebForms, я следую этим правилам:
- Содержите полученный HTML-код в чистоте:Просто потому, что вы не кодируете вручную каждый
<div>
это не значит, что сгенерированный код должен превратиться в нечитаемый кошмар.Отказ от элементов управления, которые создают уродливый код, может впоследствии окупиться сокращением времени отладки, поскольку проблемы становятся более заметными. - Минимизировать внешние зависимости:Вам платят не за то, чтобы вы отлаживали код других людей.Если вы делай выбирайте сторонние компоненты, а затем получайте исходный код, чтобы вам не приходилось тратить необычно много времени на исправление их ошибок.
- Избегайте делать слишком много на одной странице:Если вы обнаружите, что реализуете сложные "режимы" для данной страницы, подумайте о том, чтобы разбить ее на несколько однорежимных страниц, возможно, используя мастер-страницы для выделения общих аспектов.
- Избегайте обратной отправки:Это всегда была ужасная идея, и с тех пор она не стала менее ужасной.Приятным бонусом является то, что вы избавитесь от головной боли, если не будете использовать элементы управления, зависящие от обратной передачи.
- Избегать состояния ПРОСМОТРА:Смотрите комментарии к #4.
При работе с крупными проектами лучшее предложение, которое я могу вам дать, - следовать общему шаблону проектирования, которому все ваши разработчики хорошо обучены и о котором они хорошо осведомлены.Если вы имеете дело с ASP.NET, то лучшими двумя вариантами для меня являются:
o Ведущий представления модели (хотя теперь это супервизор-контроллер и Пассивный вид).Это надежная модель, обеспечивающая разделение между вашим пользовательским интерфейсом и бизнес-моделью, которой все ваши разработчики могут следовать без особых проблем.Результирующий код гораздо более тестируем и ремонтопригоден.Проблема в том, что она не применяется принудительно, и вам требуется написать много вспомогательного кода для реализации модели.
o ASP.NET MVC Проблема с этим в том, что он находится в режиме предварительного просмотра.Я разговаривал с Татхэмом Одди, и он упомянул, что это очень стабильная и полезная программа.Мне это нравится, это обеспечивает разделение проблем и делает это с минимальным дополнительным кодом для разработчика.
Я думаю, что какую бы модель вы ни выбрали, самое главное - иметь модель и быть уверенным, что все ваши разработчики смогут придерживаться этой модели.
Начните с Мастер-страниц в день № 1 - возвращение к модернизации сопряжено с болью.
Следуя тому, что сказал Одд, я тестирую версию MVP под названием Model Presentation, которая пока у меня хорошо работает.Я все еще начинаю понимать это и адаптирую для собственного использования, но это освежает код, который я использовал для написания.
Проверьте это здесь: Модель представления
Используйте контроль версий и структуру папок, чтобы в одной папке не находилось слишком много файлов.Нет ничего более болезненного, чем ждать, пока проводник Windows что-нибудь загрузит, потому что в папке более 1000 файлов, и он должен загрузить их все при открытии папки.Соглашение об именовании переменных и методов также полезно иметь заранее, если это возможно, чтобы не было этой мешанины кода, в который разные разработчики вносят свои уникальные штрихи, и это болезненно проявляется.
Использование шаблонов проектирования может быть полезно для организации кода и его хорошего масштабирования, напримершаблон стратегии может привести к упрощению процесса добавления нового типа продукта или устройства, которые необходимо поддерживать.Аналогично для использования некоторых шаблонов адаптеров или фасадов.
Наконец, знайте, каким стандартам будут соответствовать ваши формы:Это только для пользователей IE или любой из IE, Firefox или Safari должен легко загружать форму и хорошо выглядеть?