Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
Обычно лучше сохранить презентацию (HTML) отдельный от логики (код "бэкенда"). Ваш код отделяется и легче поддержать этот путь.
Пока Ваше написание кода HTML является отдельным от Вашей прикладной логики, и HTML, как гарантируют, будет правильно построен так или иначе, необходимо быть хорошо.
Единственный код, который должен быть смешан на основанных на разметке страницах (т.е., те, которые содержат литеральный HTML) является кодом, используемым для форматирования HTML (например, цикл для того, чтобы выписать список).
Существуют компромиссы, вставляете ли Вы код с HTML, или Вы используете чистый код для записи HTML с помощью заключенных в кавычки строковых литералов.
Нет, если Вы хотите создать хорошее и удобное в сопровождении программное обеспечение и достигнуть слабой связи.
Если я понимаю право вопроса, Вы спрашиваете, является ли это хорошей практикой для смешивания разметки с кодом бэкенда. Нет. В то время как это обычно делается, это - все еще плохая идея.
Необходимо ли читать на парадигме MVC, а также по существующим вопросам по вопросу, такой как, Что лучший способ состоит в том, чтобы переместить существующее грязное веб-приложение в изящный MVC? и Лучшие практики для рефакторинга классического ASP?
Точка должна разделить логику дисплея от остальной части кода. В любом сложном сайте у Вас будет код смешанным в с Вашим HTML, но код должен быть в целях дисплея только. Это не должно делать никаких сложных вычислений.
Например, шаблоны будут содержать циклы и условные выражения. Плюс у Вас, вероятно, будет библиотека определенных для HTML стандартных программ, как распечатывание <опция> список на основе объекта списка.
Предположите запись приложения, которое имеет два режима вывода: HTML и что-то еще. Как Вы записали бы это, чтобы не копировать код? Это, вероятно, укажет на Вас в правильном направлении.
HTML, который составляет представление, должен быть отправлен в браузер в некотором роде. В .NET каждое управление сервером испускает свою собственную разметку HTML как часть жизненного цикла страницы. Так да нормально использовать HTML в серверном коде.
Возможно, необходимо попробовать после шаблона ASP.net. Создайте набор средств управления, которые представляют элементы UI и делают их ответственными за испускание их собственного HTML на основе их состояния.
Если мне нужны методы, которые генерируют HTML, я обычно изолирую их в классе HtmlHelpers. Тем путем Вы сохраняете некоторый уровень разделения. Платформа MVC ASP.NET делает это вполне успешно.
Его fugly, и не безопасный с точки зрения типов. Но люди делают это без последствия. Я предпочел бы использовать DOM или, как минимум, классы, разработанные для записи HTML с помощью безопасной с точки зрения типов семантики. Кроме того, не весь настолько хороший для смешивания UI с логикой...
Если Вы означаете распечатывать HTML в своем коде, то нет. Если у Вас нет серьезного основания не к, необходимо использовать шаблоны
Даже если Вы думаете, что Вам не нужно это теперь, всегда существует хороший шанс, Вам будет нужен он позже. Возможно, Вы хотите произвести в другом формате, чем HTML, или Вы хотите другую презентацию для тех же данных. У Вас обычно есть потребность в этих вещах далее в будущем, поэтому лучше использовать один от запуска.
Я ненавижу, когда разработчики печатают () набор HTML. Это является абсолютно ненужным и выглядит ужасным в любом текстовом редакторе, который отображает строки печати/эха красным.
Я соглашаюсь со всеми остальными, что необходимо попробовать настолько трудно, как Вы можете для разделения разметки HTML/XHTML от прикладной логики. Однако иногда действительно необходимо генерировать HTML/XHTML в прикладной логике по различным причинам.
В этих случаях, что я пытался сделать, должен гарантировать, что объем абсолютного минимума кода презентации находится в смешанном в с прикладной логикой, и попытайтесь переместить все остальное в код презентации. Это не стоит ничего, что является некоторыми случаями, у Вас есть ситуации, где у Вас могло быть все, отодвинулся к уровню представления, но могло бы быть немного легче генерировать разметку как часть прикладной логики. В тех случаях Ваш лучший выбор, вероятно, будет состоять в том, чтобы пойти путем, который имеет большую часть смысла с точки зрения времени.
Идеально Вы стремитесь к разделению проблем между Вашей презентацией (UI) код и Вашим доменом (бизнес-логика) код.
Причина, почему необходимо постараться не связывать эти две проблемы (в любом направлении) проста...
У Вас только будет одна причина изменить часть кода. является ли это от структурных изменений / изменений моделирования в Вашем дизайне HTML, или от Вашего изменения бизнес-правил, Вам придется только внести изменение в одном месте.
До меньшей степени, хотя многие пуристы не согласились бы путем разбрызгивания HTML-кода через доменный код или наоборот Вы создаете шум для следующего разработчика, который приезжает для читения/поддержания его.
Я не думаю, что существует любое оправдание за генерацию HTML в Вашей бизнес-логике. Даже не делайте этого, когда это - просто "быстрое исправление" или когда Вы "возвратитесь и зафиксируете его позже", потому что этого никогда не происходит.
Для повторения моего положения от других вопросов, с помощью некоторой управляющей логики (условные выражения, циклы) в HTML для построения, это в порядке. Не делайте никакого массирования данных или бизнес-логики в HTML. Вы должны дисциплинироваться, но это стоит того. Обслуживание намного легче, если Ваши проблемы (как логика и дисплей) разделяются.