2011-07-16 27 views
5

Đây là câu hỏi liên quan đến các phương pháp mã hóa tốt nhất. Tôi muốn biết sự đồng thuận về cách tránh các chuỗi và giá trị hardcoding tốt nhất trong ứng dụng .NET. Những gì tôi đã nhìn thấy cho đến nay mà trước đây tôi đã từng làm việc:Cách tránh các chuỗi mã hóa cứng

  • sử dụng tài nguyên file resx
  • lưu trữ các giá trị và chuỗi trong App.config hoặc web.config
  • thực hiện một ApplicationStrings lớp tĩnh và tuyên bố tất cả các chuỗi và các giá trị trong đó:

    public static class ApplicationStrings 
    { 
        #region constants 
        public const string APPLICATION_NAME = "X"; 
        public const string APPLICATION_RESOURCEMANAGER_NAME = "ResourceManagerX"; 
        public const string APPLICATION_DEFAULT_LOGFILENAME = "log.txt"; 
    } 
    

Tuy nhiên, không phải là phương pháp thứ 3, chỉ là một hardcode? Liệu nó có ý nghĩa để có một lớp học như vậy? Lợi ích sẽ là tất cả các chuỗi được ở một nơi, nhưng thực sự là tránh một hardcode?

Ngoài ra, nếu bạn đã phát triển các thói quen khác cho tình huống này, vui lòng đăng.

+1

Tôi muốn các trường chỉ đọc tĩnh hơn hằng số tại đây. Hằng số là nhiều hơn cho những thứ sẽ có cùng giá trị mãi mãi. Mà làm cho ngữ nghĩa phiên bản nhị phân của họ một chút gây phiền nhiễu. – CodesInChaos

Trả lời

4

Lợi ích chính thực sự là có tất cả các chuỗi ở một nơi và bạn chỉ cần thay đổi nó ở đó để cập nhật toàn bộ chương trình. Nếu các phần khác nhau của chương trình của bạn sử dụng cùng một chuỗi và một cá thể được cập nhật, nhưng một phần khác thì không, thì bạn có vấn đề. Điều này đúng cho tất cả các chữ, bằng cách này.

Và sau đó với tệp tài nguyên có lợi ích của i18n và l10n. Nếu bạn cần nó, nhưng nhiều ứng dụng lớn nên.

+1

Lợi thế của tệp tài nguyên là chúng có thể được thay thế bằng các phiên bản khác khi cần thiết. Bạn _can_ làm điều đó với các tập tin mã nguồn, tất nhiên, nhưng bằng cách nào đó nó rõ ràng hơn rằng đó là dữ liệu khác nhau (i18n và l10n), không phải chức năng khác nhau. – MRAB

0

Vâng, tôi nghĩ rằng ApplicationStrings là một giải pháp tốt

1

nói chung tôi tin rằng nó là thực hành tốt để lưu trữ tất cả dữ liệu cấu hình trong một tập tin cấu hình trung ương vì vậy tất cả các dữ liệu ở một nơi và có thể được chia sẻ bởi khác ứng dụng

+0

Cảm ơn bạn đã nhắc tôi về tệp app.config và web.config, tôi đã cập nhật câu hỏi ban đầu. –

1

Theo quan điểm của tôi, ApplicationSettings chỉ hữu ích nếu cài đặt của bạn là (i) hằng số thực sự và (ii) tất nhiên thực sự là công khai. Nếu một trong các trường hợp này không đúng thì điều này không lý tưởng và lựa chọn của bạn quay lại tệp .config .resx

Các vấn đề liên quan