IMO sử dụng một lớp đầy hằng số là tốt cho hằng số. Nếu chúng thỉnh thoảng thay đổi, tôi khuyên bạn nên sử dụng AppSettings trong cấu hình của bạn và thay vào đó là lớp ConfigurationManager.
Khi tôi có "hằng số" thực sự được kéo vào từ AppSettings hoặc tương tự, tôi vẫn sẽ luôn có một lớp "hằng số" bao bọc việc đọc từ trình quản lý cấu hình. Luôn có ý nghĩa hơn nếu có Constants.SomeModule.Setting
thay vì phải trực tiếp đến ConfigurationManager.AppSettings["SomeModule/Setting"]
bất kỳ nơi nào muốn tiêu thụ giá trị cài đặt đã nói.
Điểm thưởng cho thiết lập này, vì SomeModule
có thể là một lớp lồng nhau bên trong tệp Hằng số, bạn có thể dễ dàng sử dụng Dependency Injection để đưa SomeModule
trực tiếp vào các lớp phụ thuộc vào nó. Bạn thậm chí có thể trích xuất một giao diện trên đầu trang SomeModule
và sau đó tạo một ISomeModuleConfiguration
phần phụ thuộc vào mã tiêu thụ của bạn, điều này sau đó sẽ cho phép bạn tách phần phụ thuộc vào các tệp Constants và thậm chí có khả năng làm cho việc kiểm tra dễ dàng hơn, đặc biệt nếu các cài đặt này đến từ AppSettings và bạn thay đổi chúng bằng cách sử dụng chuyển đổi cấu hình vì cài đặt là môi trường cụ thể.