LINUX.ORG.RU

История изменений

Исправление Vit, (текущая версия) :

Если ты засунешь это в компонент, то 1) в компонент придется передавать толстый конфиг, из которого нужна только часть 2) компонент должен будет уметь извлекать из толстого конфига свою небольшую часть.

Давай для простоты считать, что в конфиге данные типа JSON, и нет потребности заморачиваться над кастомными типами. Для конфига это вполне разумное упрощение.

В твоем случае «толщина» заключается только в наличии префикса. От этого не должно быть особых проблем.

Что касается «компонент должен уметь извлекать» - нет, не должен. Предоставь с конфигом стандартные методы извлечения листа. Компоненту останется только их дернуть, передав префикс.

Попробуй мысленный эксперимент: сможешь ли ты использовать свой компонент в другой программе, не меняя его? С толстым конфигом - нет.

Это плохой эксперимент. Во-первых это не надо :). Во-вторых там где надо - это уже не компонент, а библиотека, где расклад совсем другой. Если у тебя библиотечный модуль должен сохранять стейты, то скорее всего что-то пошло совсем не так.

С твоим подходом компонент получает данные, которые ему не нужны. Это избыточность. Насчет модульности - см. мысленный эксперимент выше.

Он получает только класс конфига, не зная что внутри, и методы извлечения нужных данных. Тут нет избыточности.

Таким образом юнит-тест тоже знает, какое поддерево кому нужно.

Это к делу не относится. Что реально важно для юнит тестов - он не зависит от других данных, и для запуска не надо заполнять другие листья и глобальные переменные.

Исходная версия Vit, :

Если ты засунешь это в компонент, то 1) в компонент придется передавать толстый конфиг, из которого нужна только часть 2) компонент должен будет уметь извлекать из толстого конфига свою небольшую часть.

Давай для простоты считать, что в конфиге данные типа JSON, и нет потребности заморачиваться над кастомными типами. Это конфига это вполне разумное упрощение.

В твоем случае «толщина» заключается только в наличии префикса. От этого не должно быть особых проблем.

Что касается «компонент должен уметь извлекать» - нет, не должен. Предоставь с конфигом стандартные методы извлечения листа. Компоненту останется только их дернуть, передав префикс.

Попробуй мысленный эксперимент: сможешь ли ты использовать свой компонент в другой программе, не меняя его? С толстым конфигом - нет.

Это плохой эксперимент. Во-первых это не надо :). Во-вторых там где надо - это уже не компонент, а библиотека, где расклад совсем другой. Если у тебя библиотечный модуль должен сохранять стейты, то скорее всего что-то пошло совсем не так.

С твоим подходом компонент получает данные, которые ему не нужны. Это избыточность. Насчет модульности - см. мысленный эксперимент выше.

Он получает только класс конфига, не зная что внутри, и методы извлечения нужных данных. Тут нет избыточности.

Таким образом юнит-тест тоже знает, какое поддерево кому нужно.

Это к делу не относится. Что реально важно для юнит тестов - он не зависит от других данных, и для запуска не надо заполнять другие листья и глобальные переменные.