Świetne pytanie! Mam dokładnie ten sam problem; moje stałe są w gruncie rzeczy: jakie języki są obsługiwane w moich aplikacjach oraz dodatkowe informacje o tych językach, ponieważ dotyczą one funkcji w aplikacji.
Niestety, najlepszą rzeczą, jaką znalazłem (jak masz), jest po prostu przedefiniowanie stałych dla każdego języka, tak jak obecnie (wiem, że zdecydowanie chciałeś to usłyszeć ).
Oczywiście wydaje się to złe, ponieważ jest przeciwieństwem OSUSZANIA ( MOKRE? ). Jednak stałe powinny zmieniać się tak rzadko, że 5–10 minut ponownego ich zdefiniowania dla każdego języka tak naprawdę mi nie przeszkadza. Na koniec drobne problemy z jakimś „eleganckim” rozwiązaniem, takim jak współdzielona konfiguracja lub generowanie kodu, mogą zająć godziny lub dni, więc co naprawdę zyskujesz? Zwiększona złożoność z ryzykiem błędu, który może wymagać dodatkowego wysiłku, aby to naprawić, nie jest czymś, z czym chcę sobie poradzić.
Ponadto, jeśli twoja aplikacja ma tak wiele stałych, że redefiniowanie ich dla języka podczas ich dodawania lub zmieniania zajmuje dużo czasu, możesz po prostu mieć bardziej znaczący zapach kodu, aby sobie z tym poradzić, i wtedy możesz chcieć zmienić na coś bardziej złożonego.
Krótko mówiąc, redefinicja ich dla każdego języka była moim najlepszym rozwiązaniem, a ja jeszcze nie wymyśliłem nic więcej SUCHEGO, które nie miałoby większego ryzyka niż chciałbym sobie poradzić.
Jedną z rzeczy, na pewno zrobić, chociaż, aby upewnić się, że stałe są dobrze udokumentowane w uogólnionej (i języka agnostyk) sposób (mamy firmy documentarion repo ze specyfikacją, różne docs „deski kreślarskiej” Dokumenty itd gdzie trzymamy ten dokument). Upewnij się także, że masz mechanizm (mechanizmy) w celu synchronizacji ich definicji. Jest to tak samo duży problem z podejściem do powielania, jak ty, z wyjątkiem niewielkiego stresu psychicznego wynikającego z celowego powielania kodu. Ale w końcu twoje ciągłe zmiany powinny być bardzo celowe i rzadkie , więc kwestie synchroniczności powinny być zasadniczo zerowe.
Powinienem również wspomnieć, że przez lata widziałem wielojęzyczne porty różnych bibliotek (zbyt zmęczone, aby pamiętać, jakie są w tej chwili) napisane przez tę samą grupę, które niezmiennie mają stałe zdefiniowane w samych językach. Brak wspólnej konfiguracji, brak generowania kodu (z wyjątkiem bibliotek klienta Google API ... ale daj spokój, Google ma zasoby, aby pozwolić sobie na taką złożoność). Więc myślę, że uderzyliśmy w ten mur. Może ktoś w końcu wymyśli bibliotekę, aby poradzić sobie z tym problemem;)