Harika bir soru! Bende aynı sorun var; sabitlerim aslında: uygulamalarımda hangi diller destekleniyor ve uygulamadaki işlevsellik ile ilgili oldukları için bu diller hakkında ek bilgiler var.
Ne yazık ki, bulduğum en iyi şey (sizin gibi) şu anda yaptığınız gibi her dil için sabitleri yeniden tanımlamaktır (biliyorum, kesinlikle bunu duymak istediniz ).
Açıkçası yanlış geliyor çünkü DRY ( WET ?? ) 'in tam tersi . Ancak, sabitler o kadar seyrek değişmelidir ki, her dil için 5-10 dakikalık yeniden tanımlamak beni gerçekten rahatsız etmiyor. Günün sonunda, paylaşılan yapılandırma veya kod oluşturma gibi bazı 'zarif' çözümlerle ilgili küçük sorunların çözülmesi saatler veya günler alabilir, bu yüzden gerçekten ne kazanılır? Düzeltmek için ek çaba harcayabilecek bir şeylerin yanlış gitme riski ile birlikte karmaşıklık da ele almak istediğim bir şey değil.
Ayrıca, uygulamanızda eklediğinizde veya değiştirdiğinizde bunları dil başına yeniden tanımlayan çok fazla sabit varsa, çok zaman alırsa, başa çıkmak için daha önemli bir kod kokunuz olabilir ve bu noktada, daha karmaşık bir şeye.
Kısacası, bunları her dil için yeniden tanımlamak en iyi çözümüm oldu ve başa çıkmak istediğimden daha fazla risk faktörü olmayan daha fazla KURU şey düşünmedim.
Bir şey için kesinlikle yapmak olsa da, sizin sabitleri olduğundan emin olmaktır iyi belgelenmiş (biz tutmak nereye, docs 'tahta çizim', vb özellikleri, çeşitli dokümanlar ile bir şirket documentarion repo var genelleştirilmiş (ve Dil Agnostik) biçimini bu belge). Ayrıca tanımlarını senkronize tutmak için mekanizma (lar) ın bulunduğundan emin olun. Bu, kasıtlı kod çoğaltmasından kaynaklanan az miktarda psikolojik sıkıntı dışında, çoğaltma yaklaşımıyla ilgili olarak büyük bir sorun. Ama sonunda, sürekli değişikliklerin çok kasıtlı ve seyrek olmalı, bu nedenle eşzamanlılık sorunları esasen sıfır olmalıdır.
Yıllar boyunca, aynı kütüphanede her zaman dillerin kendisinde tanımlanmış sabitleri olan çok sayıda kütüphanenin (şu anda ne olduklarını hatırlamak için çok yorgun) çok dilli portları gördüğümü de belirtmeliyim. Paylaşılan yapılandırma yok, kod oluşturma yok (Google API istemci kitaplıkları hariç ... ancak hadi, Google bu karmaşıklığı sağlayacak kaynaklara sahip). Sanırım bunun üzerine bir tuğla duvara çarptık. Belki birisi sonunda bu problemle başa çıkmak için bir kütüphane bulur;)