В ветке что вам больше всего не нравится в "программистском невежестве"? появляется следующий ответ с большим количеством голосов:
Programmers who build XML using string concatenation.
Мой вопрос: почему построение XML с помощью конкатенации строк (например, StringBuilder
в C#) плохо?
Я делал это несколько раз в прошлом, так как иногда это самый быстрый способ добраться из точки А в точку Б, когда дело доходит до структур данных/объектов, с которыми я работаю. До сих пор я придумал несколько причин, почему это не самый лучший подход, но есть ли что-то, что я упускаю из виду? Почему этого следует избегать?
- Вероятно, самая главная причина, о которой я могу думать, заключается в том, что вам нужно экранировать ваши строки вручную, и большинство новых программистов (и даже некоторые опытные программисты) забудут об этом. Это будет отлично работать для них, когда они протестируют его, но затем «случайно» их приложения выйдут из строя, когда кто-то где-то введет символ & в свой ввод. Хорошо, я куплю это, но проблему очень легко предотвратить (SecurityElement.Escape, чтобы назвать один).
- Когда я это делаю, я обычно опускаю объявление XML (т.е.
<?xml version="1.0"?>
). Это вредно? - Штрафы за производительность? Если вы придерживаетесь правильной конкатенации строк (например,
StringBuilder
), стоит ли об этом беспокоиться? Предположительно, такой класс, какXmlWriter
, также должен будет немного манипулировать строками... - Существуют более элегантные способы генерации XML, например использование
XmlSerializer
для автоматической сериализации/десериализации ваших классов. Хорошо, конечно, я согласен. В C# есть масса полезных классов для этого, но иногда я не хочу создавать класс для чего-то действительно быстрого, например для записи файла журнала или чего-то подобного. Это только мне лень? Если я делаю что-то "настоящее", это мой предпочтительный подход для работы с XML.