Чтобы взять пример, рассмотрим набор скидок, доступных покупателю супермаркетов.
Мы могли бы определить эти правила как данные в стандартном порядке (списки квалификационных элементов, применимые даты, коды купонов) и написать общий код для их обработки. Или, мы могли бы написать каждый как кусок кода, который проверяет соответствующие вещи, учитывая список покупок клиентов и возвращает любые применимые скидки.
Вы можете разумно хранить правила как объекты, сериализоваться в Blob или хранить в файлах кода, чтобы каждое правило могло выбирать свое собственное разделение между данными и кодом, чтобы допускать будущие правила, которые не соответствовали бы типу общего процессора рассмотренного выше.
Часто бывает сложно критиковать код, который смешивает данные в операторах if, которые проверяют 6 разных вещей, которые должны быть в файле или базе данных, но есть ли правило, которое помогает в случаях краев?
Или это точка объектно-ориентированного дизайна, чтобы мы не беспокоились о линии между данными и кодом?
Чтобы уточнить, основной вопрос заключается в следующем: как бы вы закодировали приведенный выше пример? Есть ли правило, которое заставило вас решить, что такое данные и что такое код?
(Примечание: я знаю, код может быть скомпилирован, но в мире динамических языков и компиляции JIT, даже это размытое понятие.)