2011-07-16 10 views
5

최상의 코딩 방법에 관한 질문입니다. .NET 응용 프로그램에서 문자열과 값을 하드 코딩하지 않는 방법에 대한 합의를 알고 싶습니다. 지금까지 내가 이전에 일한 곳 본 적이 무엇 :문자열 하드 코딩 방지 방법

  • 사용하여 자원의 .resx 파일 정적 클래스 ApplicationStrings을이 값과 문자열의 App.config 또는 Web.config의
  • 를 저장

  • 거기에있는 모든 문자열과 값을 선언 :

    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"; 
    } 
    

을하지만,있다 없다 제 3 방법, 또 다른 하드 코드를? 그런 수업을받는 것이 합리적입니까? 이점은 모든 문자열이 한 위치에 있지만 실제로 하드 코드를 피하는 것입니다.

또한이 상황에 대한 다른 습관을 개발 한 경우 언제든지 게시하십시오.

+1

여기 정적 인 읽기 전용 필드를 여기보다 더 선호합니다. 상수는 똑같은 가치를 영원히 가지고있는 것들에 더 있습니다. 바이너리 버저 닝 의미를 약간 짜증나게합니다. – CodesInChaos

답변

4

실제로 모든 문자열을 한 곳에서 가져와 전체 프로그램을 업데이트하기 만하면됩니다. 프로그램의 다른 부분이 동일한 문자열을 사용하고 하나의 인스턴스가 업데이트되지만 다른 인스턴스가 업데이트되지 않으면 문제가 발생합니다. 이것은 모든 리터럴에 대해 사실입니다.

그런 다음 리소스 파일에는 i18n 및 l10n의 이점이 있습니다. 필요한 경우 많은 응용 프로그램을 사용해야합니다.

+1

리소스 파일의 장점은 필요한 경우 다른 버전으로 대체 될 수 있다는 것입니다. 물론 소스 코드 파일을 사용하면 그렇게 할 수 있지만, 어떻게 든 다른 기능이 아닌 다른 데이터 (i18n 및 l10n)라는 것이 분명해집니다. – MRAB

0

글쎄, 나는 ApplicationStrings이 좋은 해결책

1

내가이 모든 데이터가 한 자리에 다른 공유 할 수 있도록 중앙 설정 파일에 구성 가능한 모든 데이터를 저장하는 것이 좋습니다 생각 일반적이라고 생각 apps

+0

app.config 및 web.config 파일을 상기시켜 주셔서 감사합니다. 초기 질문을 업데이트했습니다. –

1

내 의견으로는 ApplicationSettings는 설정이 (i) 진정한 상수이고 (ii) 물론 공개 인 경우에만 유용합니다. 이러한 경우 중 하나가 사실이 아니라면 이상적이지 않으며 선택 사항은 .config 파일로 돌아갑니다. .resx

관련 문제