Đề xuất một cách thực hành tốt nhất để tạo lớp Hằng


25

Có một cuộc tranh luận giữa các thành viên trong nhóm của tôi về việc tuyên bố một lớp Hằng. Chúng tôi đang di chuyển các biến không đổi thành một lớp riêng biệt như dưới đây.

public class Constants
{
      public const string StateId = "ST";
      public const string CountryId = "CI";
}

Một vài thành viên trong nhóm của tôi đề nghị rằng chúng tôi khai báo lớp là được niêm phong để tránh tùy chọn ghi đè và một số ít gợi ý rằng chúng tôi đánh dấu nó là tĩnh để tránh việc tạo lớp Constant.
Tuy nhiên, tôi thích có nó là Seals với một hàm tạo tĩnh, vì nó sẽ giúp chúng ta khởi tạo các biến chỉ đọc trong nhu cầu trong tương lai. Xin vui lòng cho chúng tôi một số lời khuyên về điều này.


Bất cứ điều gì bạn đi, một sự cân nhắc có thể là sử dụng một giao diện trong hệ thống chứ không phải chính lớp hằng để tránh sự phụ thuộc giữa các đối tượng và lớp loại "Toàn cầu" ???
dreza

Vì vậy, bạn đồng ý về việc làm cho lớp tĩnh và chỉ hỏi bạn nên thêm một hàm tạo tĩnh bây giờ hay sau này? Tôi không thấy bất kỳ ý kiến ​​trái ngược nào trong câu hỏi của bạn, xin vui lòng làm rõ.
Doc Brown


2
Tôi không nhận được câu hỏi của bạn. Nếu một lớp không có thành viên thể hiện, bạn có thể đánh dấu nó static. Điều này là hoàn toàn trực giao với sự hiện diện hoặc vắng mặt của một nhà xây dựng tĩnh.
CodeInChaos

1
Là hằng số của bạn thực sự là hằng số theo nghĩa toán học, hay đây là một dạng cấu hình?
CodeInChaos

Câu trả lời:


31

Không hoàn toàn rõ ràng câu hỏi của bạn là gì, nhưng nếu các giá trị thực sự không đổi, tôi không thấy vấn đề gì với tùy chọn đơn giản là:

    public static class LocationConstants
    {
        public const string StateId = "ST";
        public const string CountryId = "CI";
    }

Sử dụng statictrong khai báo lớp báo hiệu ý định của bạn cho mục đích của lớp này.

Marc Gravell mô tả một số vấn đề tiềm ẩn với các hằng số trong câu trả lời Stack Overflow này . Chỉ bạn mới biết đây có phải là sự cố trong cơ sở mã của mình không, nhưng nếu các giá trị có thể thay đổi, hãy sử dụng public static readonlythay vì const, bất kỳ mã nào khác liên quan đến các hằng sẽ cần phải được xây dựng lại nếu giá trị thay đổi.


1
Một trong những lưu ý bạn có thể tìm thấy bằng cách sử dụng biến const được giải thích rõ ràng ở đây . Vì các cơ sở mã có xu hướng phát triển và trở nên phức tạp hơn, tốt hơn là nên tránh sử dụng const, hiệu suất đạt được thường không xứng đáng với rủi ro của sự cố tiềm ẩn trong tương lai, IMHO. Tôi thích sử dụng public static readonlycác biến cho hằng.
joanlofe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.