повторитель или список против объединенного html

Потратив значительное количество времени на преобразование страницы, которая использовала конкатенированный html, например

string output = "";
output +="<ul>";
foreach(MyClass item in MyItems)
{
  output += "<li>"+item.Name+" - "+item.SomeProperty.ToString()+"</li>";
}
output+="</ul>";

literalPlaceHolder.Text=output;

чтобы использовать элемент управления ListView, я только что обнаружил, что первоначальный разработчик вернулся и преобразовал страницу назад в использование объединенного HTML. По моему личному мнению, списки и повторители обеспечивают более чистую и информативную разметку, которую может редактировать кто-то с меньшим опытом работы с C#, и что они быстрее и используют меньше памяти. По крайней мере, страница должна использовать StringBuilder вместо строки. У кого-нибудь есть веские аргументы в пользу этого? Я чувствую, что это вызовет серьезный конфликт, когда я подниму эту тему.


person 3Dave    schedule 01.12.2009    source источник


Ответы (2)


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

Я согласен с тем, что менее опытным разработчикам легче иметь дело со стандартными элементами управления ASP.Net, если это вызывает беспокойство в вашей ситуации.

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

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

И, наконец, я бы посоветовал вам тщательно выбирать сражения. Этот конкретный пример не является серьезной проблемой дизайна. Если вы предвидите другие, более серьезные расхождения во мнениях в будущем, вы можете решить начать здесь с более мелкой проблемы, чтобы установить способ разрешения подобных конфликтов с вашим коллегой-разработчиком. С другой стороны, вы могли бы подумать, что это не достаточно большое дело, чтобы спорить о нем, и ждать чего-то очень важного (и я сомневаюсь, что вам придется долго ждать). Какой путь вы выберете, зависит от вовлеченных личностей.

person DOK    schedule 01.12.2009
comment
Звучит разумно. Проблема со StringBuilder возникает из-за очень длинного HTML-вывода. Каждая строка += op создает временную копию строки, что кажется неэффективным, когда есть легкодоступная альтернатива. Спасибо! - person 3Dave; 01.12.2009

Я не согласен с ответом выше.

Сначала с технической точки зрения. Использование объединенных строк в отделенном коде явно смешивает представление с вашей логикой. Если бы я просматривал это приложение, мне было бы интересно, откуда берется выходной html, поскольку aspx (или ascx) был бы пустым.

Кроме того, если вы используете такие элементы управления, как Repeater, а он объединяет HTML-код и просто выводит его на страницу, не будет согласованности между различными областями вашего приложения, и оно просто станет mess, чтобы знать, где искать, когда появляется ошибка или когда нужно добавить функцию.

Я бы посоветовал вам просто спросить его, почему он предпочитает объединять Html. Каковы его причины переключить ваш код на его способ работы, не спрашивая сначала.

Я также не согласен с точки зрения командной работы. В команде общение — это все. Без общения вы обречены на провал. Не бойтесь общаться. когда есть вопрос, вы должны задать его и прояснить ситуацию. Выиграете ли вы или он, не имеет значения. суть в том, чтобы понимать друг друга и работать в команде, вместе, а не друг против друга.

person Stéphane    schedule 01.12.2009