Вопрос по архитектуре класса

#language-agnostic #class-structure

#не зависит от языка #структура класса

Вопрос:

Сразу после некоторых мнений по этому довольно простому вопросу.

Скажем, у меня есть класс DocumentParser, который извлекает множество данных из электронной таблицы Excel. Данные, которые записываются, моделируются с помощью другого объекта, скажем ‘DataObject’. Анализатор документов создает коллекцию этих объектов, готовую к переносу в большой диапазон наборов данных, для выполнения дальнейших задач.

Мой вопрос в том, внедрили бы вы заполнение набора данных в том же классе, что и анализатор документов, или, придерживаясь принципа единой ответственности, вы бы сделали это новым классом? Если это отдельный класс, как бы вы предоставили коллекцию объектов данных этому классу, вы бы просто передали в качестве параметра?

Спасибо.

Ответ №1:

ваш класс DocumentParser несет только одну ответственность: и это анализировать данные и возвращать из них структуру данных. Используйте другой класс для обработки этого набора данных — аналогично, если хотите, полному синтаксическому анализу XML (возвращает документ) и записи этого документа обратно в XML! Я бы предложил перенести вашу коллекцию DataObject в другой класс, который допускает итерацию по нему (опять же, посмотрите, как работает синтаксический анализ XML-документа), а затем передать эти инкапсулированные данные, а не просто коллекцию DataObject.