2013-08-05 4 views

답변

0

(1) 구성 파일을 구문 분석하고 구문 분석 된 세부 정보를 사전에서 검색하여 (2) name = value 쌍을 검색하여 사전에 저장하는 것이 좋습니다. 이렇게 분리 된 관심 사항은 누락 된 이름 = 값 쌍이 기본값이 반환되거나 예외가 발생하도록 지정하는 (2)에 대한 오버로드 된 API를 제공 할 수있게합니다. 예를 들어 (의사 코드) :

cfg = parseConfigurationFile("example.cfg") 
x = cfg.lookupString("x"); // throws an exception if the name=value is missing 
y = cfg.lookupString("y", "hello, World!"); // returns default value if name=value is missing 

나는 또한 API 유형 안전 조회 방법 등 lookupInt(), lookupBoolean(), lookupDouble() 등을 제공해야하는 것이 좋습니다. 조회 된 값을 지정된 유형으로 파싱 할 수없는 경우 해당 메소드는 예외를 throw해야합니다.

편집은 예를 들어 코멘트에

"감사합니다 응답합니다. 내가 더 궁금조차 기본 설정을 제공하고 설정이 잘못되면 응용 프로그램을 시작하는 좋은 생각합니다. "

은 내가 Fail Fast Principle 좋아, 그래서 모든 구성 데이터가 유효하지 않은 경우, 응용 프로그램 오류를보고 정지보다는 아마 나쁜 대신 기본값을 사용하여 (자동으로 오류를 복구를 시도 할 것을 권고 구성 값)을 입력하고 계속하십시오.

그러나 나는 반드시 이 (가) 이름 = 값 쌍이 누락되어 오류라고보고해야한다고 생각하지 않습니다. 대신 누락 된 값에 기본값을 사용하는 것이 유효합니다. 모두 구성 이름 = 값 쌍을 선택적으로 허용하여 극단적으로 생각하면 응용 프로그램은 구성 파일없이 "즉시 사용할 수 있습니다". 따라서 응용 프로그램의 용이성이 향상됩니다. 새로운 사용자를 위해 사용하십시오.

몇 년 전, 특정 구성 파일 구문을 구문 분석하기 위해 Config4* (C++ 및 Java 라이브러리)을 작성했습니다. Config4 *는 모든/모든 name = value 쌍을 선택적으로 사용할 수있는 우아한 방법을 제공합니다. Config4 * 설명서는 대체 구성을 호출합니다. 이 내용을 배우고 싶다면 Config4 * 시작 안내서의 2 장을 읽으면 구성 구문을 이해하고 동일한 설명서의 3 장을 읽고 API를 이해하는 것이 좋습니다. 3.6.2 절 (파싱 포함 된 구성) 및 3.6.3 (대체 구성 사용)에 특히주의하십시오.

+0

예를 들어 주셔서 감사합니다. 더 이상 기본 설정을 제공하고 설정이 잘못 되었다면 애플리케이션을 시작하는 것이 좋은 생각인지 궁금합니다. –

+0

설명 주셔서 감사합니다. –

관련 문제