문제

CurrentCulture 또는 InvariantCulture를 지정하고 전혀 문화를 지정하지 않는 가장 좋은 방법은 무엇입니까?

내가 읽은 것에서, 직렬화를하고 있다면, 예를 들어, 데이터 값의 표준 표현을 지정하는 수단으로 invariantCulture가 필요합니다.그것은 문화 기반 문자열 조작의 비교적 적은 비율입니다.

나는 그것을 길고 자세히, 그리고 추악한 대부분의 시간을 내가 할 때마다 그것을 지정할 수 있습니다.

var greeting = string.Format(CultureInfo.CurrentCulture, "Hello ", userName); 
.

그러나 팀은 최근에 FXCOP를 켜고 이제는 항상 문화 정보를 항상 사용하기위한 푸시가 있습니다.간결성, 가독성 및 기능을 결합하는 가장 좋은 기술은 무엇입니까?

좋은 독서 재료 :

도움이 되었습니까?

해결책

여기에서 고유 한 삭제가 있습니다.

최소한 프로그램 내에서 내부적 인 작업을 수행 할 때마다 InvariantCulture를 사용하도록 CultureInfo를 지정하려고합니다. 예를 들어,이를 직렬화로 사용하면 데이터 표현을 항상 동일하게 유지하므로 내부 데이터 형식의 국제화 문제에 대해 걱정할 필요가 없습니다.

이를 지정하는 것이 가장 많은 이점을 가지고 있습니다. 주로 당신이 이것을 올바르게 취급하고 있는지 확인하는 데 도움이됩니다. 내부 프로그램 작업 대 UI 작업에는 다른 문화가 지정되어야합니다 (응용 프로그램을 적절하게 현지화하려는 경우). 결과적으로 복잡한 프로그램은 "기본값"을 떠나는 것처럼 모든 곳에서 지정 해야하는 경향이 있으며 시간이 지남에 따라 버그를 도입하는 경향이 있습니다.

그러나 눈에 띄는 대로이 코드의 크기를 늘리고 잠재적으로 가독성을 줄이는 경향이 있습니다. 이는 짧은 코드 대 짧은 코드 대 적절한 국제화 및 지역화 및 유지 보수성을 통해 짧은 코드와 유지 보수성을 유도합니다.

내 의견으로 여기에 "권리"답변이 없습니다. 실제로 응용 프로그램에 의존합니다. 응용 프로그램이 프리젠 테이션에 대해 완전히 완전히 있고 많은 데이터 조작을 수행하지 않으면 특히 모든 유형의 자체 관리 파일 저장소가 아닌 현재 문화 (및 UI 문화)를 한 번 설정할 수 있습니다. 그러나 더 복잡한 응용 프로그램 이이 방식에서도 작동하지 않는 경향이 있음을 발견했습니다. 그러나 어떤 경우에는이 사물을 지정하는 FXCOP 제안이 더욱 매력적입니다.

다른 팁

기본값은 이미 Windows에서 초기화 된 현재 문화입니다.그래서 cultureinfo.currentculture를 명시 적으로 사용하면 시간 낭비 일뿐입니다.괜찮은 직렬화 형식 (바이너리 직렬화 및 XML 직렬화 포함)은 문화 불변 방식으로 DateTime을 직렬화합니다.

기본값이 아닌 문화를 사용하는 것은 매우 위험합니다.Windows를 설치하고 Windows를 설치할 때 사용자가 구성한 기본 문화물로 항상 스레드를 시작합니다..NET ThreadPool 스레드를 항상 시작하면 주 스레드와 다른 스레드에서 문화를 얻을 위험이 있습니다.모든 방식의 미묘한 문제를 일으킬 수 있습니다.SortedList가 갑자기 더 이상 정렬되지 않는 것처럼.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top