В качестве примера, скажем, вы пишете приложение на 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
тип изменяется, то эти изменения необходимо повторять в каждой отдельной части проекта.
Я знаю, что библиотека protobuf от Google предлагает своего рода решение этой проблемы, когда вы пишете структуру данных с использованием специального синтаксиса, а затем библиотека генерирует для вас объявление структуры на нескольких разных языках программирования. Но это все еще не решает проблему повторения логики проверки для ваших типов.
У кого-нибудь есть какие-либо предложения или ссылки на книги / сообщения в блоге по этому поводу?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
, Это не так. У вас есть 4 разные системы, которые делают разные вещи. Вы слишком далеко зашли СУХОЙ. По моему опыту, тот тип повторного использования, который вы хотите сделать, является семенем зла, потому что вводите тесную связь. Это даже хуже, чем повторить User
4 раза на 4 разных языках. В распределенных средах связь является проблемой. СУХОЙ нет.