повторител или listview срещу конкатениран 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 код и просто го извежда на страницата, няма да има последователност между различните области на приложението ви и то просто ще се превърне в бъркотия, за да знаете къде да погледнете, когато се появи грешка или когато трябва да се добави функция.

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

Също така не съм съгласен относно гледната точка на работата в екип. В един екип комуникацията е всичко. Без комуникация сте обречени на провал. Не се страхувайте да общувате. когато има въпрос, трябва да го зададете и трябва да изясните нещата. дали ти печелиш или той печели не е важно. въпросът е да се разбираме и да работим като екип, заедно, а не един срещу друг.

person Stéphane    schedule 01.12.2009