2010-11-29 4 views
17

어디에서 일반적으로 사용되는 문자열을 오류 메시지, 알림 등에 저장해야합니까?어디서 상속 문자열을 .NET에 저장해야합니까?

숫자가 const 인이 글로벌 클래스에 넣었지만 리소스 파일에 저장되어있는 부분도 보았습니다. 어디에 넣을 수있는 가장 좋은 장소는 어디입니까? .NET btw를 사용하고 있습니다.

답변

15

Resx는 국제화 또는 인스턴스 별 사용자 정의와 같이 스왑하려는 경우 유용합니다. 하지만 그들 사이에 수동으로 이동하는 것은 그리 어렵지 않습니다. 그래서 : 그것은 변화 할 필요가있을 것입니까?

나는는 말을 : 당신이경우 단단히 가능한 범위로 상수를 유지하려고, 코드에 보관; 상수가 User 인스턴스에만 관련된 경우 예를 들어 User에 입력하십시오.

마찬가지로 이 변경되지 않는 경우이 변경되면 resx가 어수선 해지지 않아야합니다. 예를 들어 데이터베이스에있는 값의 의미와 관련이있는 내부적으로 잘 알려진 문자열은 이 resx를 사용하는인데도 resx에 속하지 않을 수 있습니다.

7

제품 번역/현지화를 원할 경우 리소스 파일을 저장하는 것이 가장 좋습니다.

나는 둘 다 다른 장점들/단점들이 있지만 그것이 내 머리 속으로 먼저 도약한다는 것이 확실하다.

1

this post을 참조하십시오. 거기에는 몇 가지 유용한 답변과 의견이 담긴 귀중한 토론이 있습니다.

  • 이 상수 공용 클래스를 작성하기 전에 두 번 생각 : 당신이해야 일반적으로

    . 그들은 그런 다음 리소스 파일에 넣어 등의 제목 등 UI 요소의 일부 경우

3

을 리소스 파일에 사용자 메시지에 표시

  • 장소 (프로젝트 현지화가 필요합니다 때 당신은 알고 않음).

    파일 접두어, 내부 오류 메시지 문자열 등과 같은 프로그램 구성 요소의 일부인 경우 별도의 코드 파일에 넣어야합니다.

  • 3

    지역화 할 수있는 모든 항목은 리소스 파일에 있어야합니다. 100 % 확신하더라도 리소스 파일에 문자열을 포함하는 현지화가 필요하지 않으므로 쉽게 전환 할 수 있습니다.

    제목, 이름, GUI 레이블, 대화 텍스트, 오류 메시지 등은 모두 resx에 속합니다. 지금 해보십시오. 응용 프로그램을 현지화해야 할 경우/이후 개발자가 감사 할 것입니다.

    이제 다른 상수는 좀 더 어렵습니다. 난 하드 & 빠른 규칙을 생각하지 않지만 일반적으로 const로 "진정한"상수를 정의하려고 시도로 필요한 범위의 작은. 진정한 상수는 응용 프로그램 수명의 범위를 변경하지 않을 것입니다. 캡슐화를 깨는 경향이 있으므로 비 지역화 된 문자열에 리소스 파일을 사용하고 싶지 않습니다. 예를 들어, PKDB2에 대한 크기 요구 기능은 로컬로 정의되어야합니다.암호화 객체 외부의 누구도 그것이 무엇인지 알 필요가 없습니다.

    모든 것이 관련 주제입니다. 현재 정적이지만 앞으로 변경 될 가능성이있는 항목 (이후 버전의 응용 프로그램에서도)은 읽기 전용으로 선언해야합니다. 이것들은 resx로부터로드 될 수 있습니다. 개인적으로는 그렇지 않습니다. Effective C#은 항목 # 2에서 이것을 다룹니다.

    또한 회사/팀의 요구 사항에 달려 있습니다. 리소스 파일에 아무것도없는 팀에 있었고 모든 것이 (심지어 로컬에서 정의되어야한다고 느껴지는 것조차도) 리소스 파일에 보관 된 팀에있었습니다.

    +0

    True (+1)이지만 현지화가 * 단지 * 텍스트라고 생각하는 것은 조금 인공적입니다. 최소한, 상황을 올바르게 맞추기 위해 필요한 레이아웃 변경이있을 수 있지만 전체적인 호스트 *는 미묘한 문제입니다. –

    +1

    동의 함. 문제는 범위를 문자열로 제한하므로 내 답변에서 다루었습니다. 당신 말이 맞아요. 현지화로 인해 변경 될 수있는 모든 것은 resx에 들어 있어야합니다. 더 많은 미묘한 점들을 종종 깨닫기 위해서는 적어도 현지화 작업에 경험이 있어야합니다. –

    관련 문제