ООП-пуристский вопрос
Может ли класс, являющийся моделью для данных предметной области, содержать в себе ссылку на логгер(log4net,log4j) и выводить данные в лог? :)
Вот представьте себе, есть у вас описание какой-нибудь хреновины, например карточка клиента. И эта карточка при попытках сделать с ней что-нибудь нехорошее, записывает это дело и отсылает "куда нужно" :)
Если бы это был Haskell, такого вопроса не возникло бы вообще, т.к. данные они и есть данные, а в лог без таскания за собой IO или unsafePerformIO и не запишешь ничего.
Вот представьте себе, есть у вас описание какой-нибудь хреновины, например карточка клиента. И эта карточка при попытках сделать с ней что-нибудь нехорошее, записывает это дело и отсылает "куда нужно" :)
Если бы это был Haskell, такого вопроса не возникло бы вообще, т.к. данные они и есть данные, а в лог без таскания за собой IO или unsafePerformIO и не запишешь ничего.
no subject
Для целей тестирования, как минимум, важно иметь возможность извлечь функциональность и потыкать её с разных сторон. Логгинг этому будет мешать в какой-то степени, но остальные взаимодействия с внешним миром как пить дать мешать этому будут гораздо больше. Например, чтение конфига, отдача ответов по SNMP, etc — это всё пристёгиваемые сверху (методом взятия на себя ответственности за ведение обсуждаемой функциональности) или сбоку (методом [опциональной] параметризации функциональности объектами со стандартным интерфейсом) активности.
Тогда можно добыть голый функционал и даже отдать его кому-то без исходников.