Вышел у меня тут спор — должна ли быть коллекция детей в HTML/XML DOM узле непосредственно частью узла или полем. Говоря проще, третий дочерний узел это node[3] или element.node[3]?
Аргументы за вариант node[3]
1) Так логичнее, так как иерархия DOM в точности соответствует Visual Tree.
2) Для отображения дерева требуется в два раза меньше объектов.
3) Так привычнее, так как в браузерах именно такая реализация.
http://www.w3.org/TR/DOM-Level-3-Core/core.html
Аттрибуты firstChild, lastChild, previousSibling, nextSibling, parentNode, методы appendChild, removeChild, replaceChild принадлежат node. Коллекция childNodes служит только для перечисления, но не модификации.
Аргументы за вариант node.children[3]
1) Не нарушает Single Responsibility Principle, не нарушает Interface Segregation Principle.
2) Позволяет использовать существующие коллекции (не надо писать с нуля свои, либо агрегировать существующие).
3) Так привычнее, так как в WinForms и WPF именно такая реализация.
Который варинт мой, а который — нет, не скажу для объективности
Убедить друг друга не удалось, каждая сторона считает аргументы другой стороны не убедительными.
Просьба, помочь аргументами. Просьба исходить не из абстрактной крутости решений, а из практической выгоды в контексте XML/HTML DOM.