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.Settingdaripada harus langsung pergi ke ConfigurationManager.AppSettings["SomeModule/Setting"]tempat mana pun yang ingin mengkonsumsi nilai pengaturan tersebut.
Poin bonus untuk penyiapan ini, karena SomeModulekemungkinan akan menjadi kelas bersarang di dalam file Constants, Anda dapat dengan mudah menggunakan Injeksi Ketergantungan untuk menyuntikkan SomeModulelangsung ke kelas yang bergantung padanya. Anda juga dapat mengekstrak antarmuka di atas SomeModuledan kemudian membuat ketergantungan ke ISomeModuleConfigurationdalam 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.