Комментарии 17
Забавно распространить рассуждения о классах vs структурах данных на anemic и rich domain model
Структура данных это набор связанных элементов.
Связано ли имя человека с местом проживания, то есть, на улице Вязов живут люди с именем Фредди?
Я это к тому, что не по-русски это как-то. На мой занудный взгляд: структура данных — это элементы, объединённые/сгрупированные по определённому признаку.
"называют это Объектно/Реляционным рассогласованием импеданса" — неверно. Верно — рассогласование объектно/реляционного импеданса.
Ну и количество/время пересборки сейчас вообще никого не волнует.
Спасибо, поправил.
Насчёт времени пересборки — оно не интересует пока оно приемлемое. Благодаря железкам о нём перестали заботиться и оно таки периодически вырастает до неприличия.
А во-вторых дело не только в том, что пересобирать всё долго, дело ещё в том, что нужно пересобрать всё, что затронуто изменениями, а найти это всё не всегда просто.
Интересно, как в его картину мира вписываются перегрузки функций и объектные субд?
Перегрузки функций — механизм времени компиляции, объекты в объектных субд имеют с объектами из ООП не больше общего, чем ДТО.
Перегрузки функций — механизм времени компиляции
И? В том же D вы легко можете написать функцию, которая на этапе компиляции пройдётся по всем типам структур и всем функциям и составит карту соответствия типа и функции обработки.
объекты в объектных субд имеют с объектами из ООП не больше общего, чем ДТО
Да нет, там полноценные объекты, с классами, наследованием, методами и вот этим всем.
Это придётся перекомпилировать весь код, а потом его деплоить.
А насчёт объекнтых субд с полноценными объектами действительно интересно, что бы сказал Мартин
Вы так говорите будто это долгий процесс.
Когда как, бывает и долго. Особенно учитывая, что это время надо умножать на количество разработчиков. А если пересобирать библиотеки, то это точно надолго.
Но проблема не только во времени, а ещё и в том, что у всех модулей, которые надо перекомпилировать надо обновить зависимости.
Функции есть в классах в явном виде, а о существовании данных можно только догадываться. В структурах данных в явном виде присутствуют данные, а о том какие есть функции можно только гадать.
Какие есть функции можно не гадать, а импортировать библиотеки с необходимыми функциями. Далее IDE подскажет.
В случае с классами добавлять типы просто, а добавлять функции сложно. В случае со структурами добавлять функции легко, а добавлять типы сложно.
Проблема добавления структур и использования их в уже существующих функциях уже решена, например, в языке Julia.
Декларация функции в нём фактически является декларацией её интерфейса без реализации. Декларация реализации для каждого типа данных осуществляется вместе с декларацией самого типа в совершенно другом месте. Никаких if-ов или switch-ей не требуется.
Структуры данных приводят к перекомпиляции и передеплою вызывающего кода.
В языке Julia не приводят. Тип и реализация необходимых функций могут быть в отдельном куске кода. Его компиляция не требует перекомпиляции собственно декларации функции и её вызовов.
Объекты против структур данных