The core aim of data-oriented programming is to decrease system complexity by separating code from data. When the developer separates code from data, it creates two essential parts: Data entities and Class modules.
DOP works on four fundamental language-agnostic principles. These four principles are as follows:
Principle 1. Separating code from data in a way that code can reside in functions whose behavior does not depend on encapsulated data.
Principle 2. Use Generic Data Structures to represent Data Entities.
Principle 3. Make data immutable
Principle 4. Separating Data Schema and Data Representation.
These principles allow code reusability in different contexts, test code in isolation, make the system less complex, leverage functions for different contexts, flexible data model, uncomplicated data access, code behavior predictability, fast equality checks, concurrency safety, freedom to choose data to validate, optional fields, automatic data model visualization, and advanced data validation conditions.