Sebagai contoh, katakan Anda sedang menulis aplikasi di Jawa .
Aplikasi Anda berkomunikasi dengan server API yang ditulis dengan Python .
Server Python berkomunikasi dengan database SQL .
Anda juga memiliki situs web untuk aplikasi Anda yang ditulis dalam JavaScript .
Dengan 4 bahasa yang berbeda, mudah untuk akhirnya mengulangi struktur data yang sama 4 kali berbeda.
Misalnya, suatu User
tipe mungkin terlihat seperti ini (kodesemu):
type User {
integer id;
string name;
timestamp birthday;
}
Setiap bagian dari proyek akan membutuhkan semacam representasi User
. Bagian Java dan Python akan membutuhkan dua class
deklarasi yang berbeda . Basis data akan membutuhkan User
deklarasi tabel. Dan situs front end perlu mewakili User
juga.
Mengulangi tipe ini 4 kali berbeda benar-benar mematahkan prinsip Don't-Repeat-Yourself . Juga ada masalah bahwa jika User
jenisnya diubah maka perubahan ini perlu diulang di setiap bagian proyek yang berbeda.
Saya tahu bahwa pustaka protobuf Google menawarkan semacam solusi untuk masalah ini di mana Anda menulis struktur data menggunakan sintaks khusus, dan kemudian pustaka menghasilkan deklarasi struktur untuk Anda dalam berbagai bahasa pemrograman. Tetapi ini masih tidak berhubungan dengan masalah harus mengulangi logika validasi untuk tipe Anda.
Adakah yang punya saran atau tautan ke buku / posting blog tentang ini?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
. Tidak, tidak. Anda memiliki 4 sistem berbeda yang melakukan hal berbeda. Anda mengambil KERING terlalu jauh. Menurut pengalaman saya, jenis reusability yang ingin Anda lakukan adalah benih kejahatan, karena memperkenalkan kopling ketat. Itu bahkan lebih buruk daripada mengulangi User
4 kali dalam 4 bahasa yang berbeda. Dalam lingkungan terdistribusi, kopling adalah masalah. KERING tidak.