Дата-ориентированное программирование, что это и зачем? 🥸На Holy был доклад на эту тему, как раз он меня и замотивировал написать этот пост, так как про этот подход я ничего не знал. Постараюсь описать главные тезисы в этом посте. Также есть книга, которая изображена на картинке, если захочешь стать ДОП-ниндзя
😄Краткое описание:Дата-ориентированное программирование (Data-Oriented Programming, DOP) — это подход, при котором вы проектируете приложение вокруг данных, а не вокруг функций или объектов. Основная идея — разрабатывать структуры данных, которые определяют поведение приложения, минимизировать сложность и повысить читаемость кода.
🔑 Принципы ДОП:—
Иммутабельность данных: Данные не изменяются напрямую, создаются новые версии
—
Явная структура данных: Используйте простые, плоские структуры, понятные без дополнительных комментариев
—
Минимизация сложностей: Логика отделяется от данных и максимально упрощается
Разберём пример ООП и ДОП:ООП подход:
class Task {
constructor(
public id: number,
public title: string,
public completed: boolean
) {}
toggle() {
this.completed = !this.completed;
}
}
const task = new Task(1, "Написать статью", false);
task.toggle();
console.log(task.completed); // true
ДОП подход:
type Task = {
id: number;
title: string;
completed: boolean;
};
const toggleTask = (task: Task): Task => ({
...task,
completed: !task.completed,
});
const task: Task = { id: 1, title: "Написать статью", completed: false };
const updatedTask = toggleTask(task);
console.log(updatedTask.completed); // true
👉 Что изменилось?— Данные теперь иммутабельны:
task
остаётся неизменным
— Логика (функция toggleTask) отделена от данных
— Код проще тестировать и понимать (субъективно)
💬 Что думаешь про этот подход? Применил бы его и в каких случаях?
#dop@frontend_pasta #cs@frontend_pasta