Я б сказав, що блог Ноеля Льопіса - це, мабуть, найкраща інструкція для поєднання об'єктно-орієнтованого програмування та орієнтованого на дані дизайну. Він є одним із розробників терміну DOD, є сильним програмістом на C ++, і багато писав про свій стиль та про те, як він користується функціями O + C ++.
Я думаю, якби я назвав ключові елементи їх поєднання, згідно Ноелю:
- Використовуйте функції POD і не-член, не є членами друзів, наскільки це можливо. Функції, що не належать до друзів, покращують інкапсуляцію і є ключовою частиною орієнтації на дані, оскільки вони зберігають дані, дані.
- Уникайте збереження "тимчасового" стану на ваших об'єктах. Тимчасовий стан засмічує ваші дані. Якщо вам потрібно щось кеш-пам'ять (наприклад, для продуктивності), то це належить до нового класу, а функції, які не є членами, що не належать до друзів, пов'язують два типи, а не a-a, ні has-a.
- Уникайте об'єктів, які можуть знаходитись у стані A або стані B. Віддайте перевагу перемиканню між двома об'єктами, одним з яких є A, а одним з яких є B.
- Уникайте поліморфізму, уникайте віртуальних функцій, уникайте шаблонів, уникайте будь-чого, завдяки чому ваші дані мають синтаксичний вигляд однаковості, а не фактичну однаковість.
Інше велике ім'я в пропаганді DOD зараз - Майк Актон з Безсоння, але, читаючи те, що він написав, я б сказав, що він насправді не про-OO (або анти-OO, доки він все ще орієнтований на дані).