좋은 질문입니다! 나는 똑같은 문제가 있습니다. 내 상수는 본질적으로 내 응용 프로그램에서 지원되는 언어 및 응용 프로그램의 기능과 관련된 언어에 대한 추가 정보입니다.
불행히도, 내가 찾은 가장 좋은 것은 현재하고있는 것처럼 각 언어에 대한 상수를 단순히 재정의하는 것입니다 (알고 있습니다 .
분명히 그것은 DRY ( WET ?? ) 의 반대이기 때문에 잘못 느낍니다 . 그러나 각 언어에 대해 5-10 분을 재정의하는 것이 실제로 나를 귀찮게하지 않도록 상수가 자주 변경되어야합니다. 하루가 끝나면 공유 구성 또는 코드 생성과 같은 '우아한'솔루션과 관련된 작은 문제를 해결하는 데 몇 시간 또는 며칠이 걸릴 수 있으므로 실제로 얻는 것이 무엇입니까? 문제를 해결하기 위해 추가 노력을 기울일 수있는 문제의 복잡성과 복잡성을 추가 한 것은 내가 다루고 싶은 것이 아닙니다.
또한 응용 프로그램에 상수를 너무 많이 추가하여 언어를 추가하거나 변경할 때 언어마다 재정의하는 데 상당한 시간이 걸리는 경우 처리해야 할 코드 냄새가 더 커질 수 있습니다. 더 복잡한 것에.
한마디로, 각 언어에 대해 그것들을 재정의하는 것이 최선의 해결책이며, 아직 다루고 싶은 것보다 더 큰 위험 요소가없는 DRY는 더 이상 생각하지 않았습니다.
그러나 분명히 해야 할 한 가지는 상수가 일반화되고 언어에 구애받지 않는 방식으로 잘 문서화 되어 있는지 확인하는 것입니다 . 이 문서). 또한 정의를 동기화 할 수있는 메커니즘이 있는지 확인하십시오. 의도적 인 코드 복제로 인한 소량의 심리적 고통을 제외하고는 복제 방법에있어 큰 문제입니다. 그러나 결국 지속적인 변화는 매우 신중 하고 드물게 발생하므로 동기 문제는 본질적으로 없어야합니다.
또한 수년 동안 언어 자체에 상수가 정의 된 동일한 그룹이 작성한 여러 라이브러리의 여러 언어 포트 (현재 라이브러리를 기억하기에는 너무 피곤함)를 보았습니다. 공유 구성, 코드 생성 없음 (Google API 클라이언트 라이브러리 제외 ...하지만 Google은 이러한 복잡성을 감당할 수있는 리소스를 보유하고 있습니다). 그래서 우리는 이것에 벽돌 벽을 쳤다고 생각합니다. 어쩌면 누군가 가이 문제를 해결하기 위해 결국 라이브러리를 만들 것입니다.)