Наприклад, скажіть, що ви пишете додаток на Java .
Ваш додаток спілкується з сервером API, написаним на Python .
Сервер Python спілкується з базою даних SQL .
У вас також є веб-сайт для вашої програми, написаний на JavaScript .
З 4 різними мовами легко в кінцевому підсумку повторювати по суті однакові структури даних у 4 різні часи.
Наприклад, User
тип може виглядати приблизно так (псевдокод):
type User {
integer id;
string name;
timestamp birthday;
}
Кожна частина проекту потребує певного представлення User
. Частини Java та Python потребують двох різних class
декларацій. Базі даних потрібна User
декларація таблиці. І передній сайт також повинен був представляти собою User
.
Повторення цього типу 4 різних разів дійсно порушує принцип " Не повторюйся" . Також існує проблема, що якщо User
тип буде змінено, то ці зміни потрібно повторити в кожній іншій частині проекту.
Я знаю, що бібліотека протобуфів Google пропонує своєрідне рішення цієї проблеми, в якій ви пишете структуру даних за допомогою спеціального синтаксису, а потім бібліотека створює для вас декларацію структури в декількох різних мовах програмування. Але це все ще не стосується питання про необхідність повторення логіки перевірки для ваших типів.
Хтось має якісь пропозиції або посилання на книги / публікації в блозі з цього приводу?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
. Ні, це не так. У вас є 4 різні системи, які роблять різні речі. Ви забираєте ДУХУ занадто далеко. На мій досвід, тип повторного використання, який ви хочете зробити, - це насіння зла, тому що запроваджуйте жорстке сполучення. Це навіть гірше, ніж повторити User
4 рази на 4 різних мовах. У розподілених середовищах проблема з'єднання є проблемою. СУХИЙ - ні.