Pertanyaan bagus! Saya memiliki masalah yang persis sama; konstanta saya pada dasarnya: bahasa apa yang didukung dalam aplikasi saya, dan informasi tambahan tentang bahasa-bahasa tersebut karena berkaitan dengan fungsionalitas dalam aplikasi.
Sayangnya, hal terbaik yang saya temukan (seperti yang Anda miliki) adalah cukup mendefinisikan ulang konstanta untuk setiap bahasa, seperti yang Anda lakukan saat ini (saya tahu, Anda pasti ingin mendengarnya ).
Jelas itu terasa salah karena itu kebalikan dari KERING ( WET ?? ). Namun, konstanta harus berubah sangat jarang sehingga 5-10 menit mendefinisikannya kembali untuk setiap bahasa tidak terlalu mengganggu saya. Pada akhirnya, masalah kecil dengan beberapa solusi 'elegan' seperti konfigurasi bersama atau pembuatan kode dapat membutuhkan waktu berjam-jam atau beberapa hari untuk diselesaikan, jadi apa yang benar-benar didapat? Menambah kerumitan dengan risiko terjadi kesalahan yang perlu upaya tambahan untuk memperbaikinya bukanlah sesuatu yang ingin saya tangani.
Selain itu, jika aplikasi Anda memiliki begitu banyak konstanta yang mendefinisikan ulang mereka per bahasa ketika Anda menambah atau mengubahnya membutuhkan banyak waktu, Anda mungkin hanya memiliki bau kode yang lebih signifikan untuk ditangani dan, pada titik itu, Anda mungkin ingin mengubah untuk sesuatu yang lebih kompleks.
Jadi singkatnya, mendefinisikan kembali mereka untuk setiap bahasa adalah solusi terbaik saya, dan saya belum memikirkan sesuatu yang lebih KERING yang tidak memiliki faktor risiko lebih daripada yang ingin saya tangani.
Namun, satu hal yang pasti harus dilakukan adalah memastikan bahwa konstanta Anda didokumentasikan dengan baik dengan cara umum (dan bahasa agnostik) (kami memiliki repo dokumentasi perusahaan dengan spesifikasi, dokumen lain-lain, dokumen 'papan gambar', dll. Tempat kami menyimpannya dokumen ini). Pastikan juga Anda memiliki mekanisme untuk menjaga definisi mereka tetap sinkron. Itu tentang masalah besar dengan pendekatan duplikasi seperti yang Anda miliki, kecuali untuk sejumlah kecil tekanan psikologis dari duplikasi kode yang disengaja. Tetapi pada akhirnya, perubahan konstan Anda harus sangat disengaja dan jarang , sehingga masalah sinkronisitas pada dasarnya tidak ada.
Saya juga harus menyebutkan bahwa selama bertahun-tahun, saya telah melihat port multi-bahasa dari berbagai perpustakaan (terlalu lelah untuk mengingat apa itu saat ini) ditulis oleh kelompok yang sama yang selalu memiliki konstanta yang didefinisikan dalam bahasa itu sendiri. Tidak ada konfigurasi bersama, tidak ada pembuatan kode (kecuali untuk perpustakaan klien Google API ... tapi ayolah, Google memiliki sumber daya untuk membayar kompleksitas seperti itu). Jadi saya pikir kita telah menabrak dinding bata yang satu ini. Mungkin seseorang pada akhirnya akan datang dengan perpustakaan untuk mengatasi masalah ini;)