IMO menggunakan kelas yang penuh dengan konstanta tidak masalah untuk konstanta. Jika mereka akan berubah semi-sesekali, saya sarankan menggunakan AppSettings di config Anda dan kelas ConfigurationManager sebagai gantinya.
Ketika saya memiliki "konstanta" yang benar-benar ditarik dari AppSettings atau serupa, saya masih akan selalu memiliki kelas "konstanta" yang membungkus pembacaan dari manajer konfigurasi. Itu selalu lebih bermakna untuk dimiliki Constants.SomeModule.Setting
daripada harus langsung pergi ke ConfigurationManager.AppSettings["SomeModule/Setting"]
tempat mana pun yang ingin mengkonsumsi nilai pengaturan tersebut.
Poin bonus untuk penyiapan ini, karena SomeModule
kemungkinan akan menjadi kelas bersarang di dalam file Constants, Anda dapat dengan mudah menggunakan Injeksi Ketergantungan untuk menyuntikkan SomeModule
langsung ke kelas yang bergantung padanya. Anda juga dapat mengekstrak antarmuka di atas SomeModule
dan kemudian membuat ketergantungan ke ISomeModuleConfiguration
dalam kode konsumsi Anda, ini kemudian akan memungkinkan Anda untuk memisahkan ketergantungan ke file Constants, dan bahkan berpotensi membuat pengujian lebih mudah, terutama jika pengaturan ini berasal dari AppSettings dan Anda mengubahnya menggunakan transformasi konfigurasi karena pengaturannya khusus lingkungan.