설정 파일을 사전으로 구문 분석하는 방법이 있습니다. 구성 매개 변수가없는 경우 어떻게 작동해야하는지 확신 할 수 없습니다. 기본값을 사용하고 오류를 기록하거나 예외를 발생시켜야합니까?설정 읽기의 기본 설정이 실패합니다.
답변
(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 (대체 구성 사용)에 특히주의하십시오.
- 1. O365 예제 설정이 실패합니다.
- 2. aspx 테이블의 가시성 설정이 실패합니다.
- 3. 기본 URL 설정이 부적절합니다.
- 4. 레일 내가 기본 설정이
- 5. 반복 불가 읽기의 경우입니까?
- 6. eq을 사용하는 라디오 버튼의 jQuery 설정이 실패합니다.
- 7. FluentValidation에서 RuleSet에 대한 메시지 설정이 실패합니다.
- 8. Java 암호화 설정이 InvalidKeySpecException과 함께 실패합니다.
- 9. Laravel 설정 프로젝트 파일이 실패합니다.
- 10. VSTO 기본 설정이 작동하지 않습니다.
- 11. XML 읽기의 XPath 성능
- 12. Parcelable과 데이터베이스에서 읽기의 효율성
- 13. 파일 읽기의 외부 라이브러리
- 14. 안드로이드 읽기의 USB 비동기
- 15. flume이 설정 파일에서 실패합니다.
- 16. 레이아웃 변경 후 기본 레이아웃 설정이 사라졌습니다.
- 17. 기본 파일 업로드가 실패합니다.
- 18. Android 기본 설정 : 종속성
- 19. Zend SMTP 기본 설정
- 20. Nginx 기본 가상 호스트 설정이 작동하지 않습니다.
- 21. media element.js 오디오 설정이 파이어 폭스에서 실패합니다. 다른 곳에서도 작동합니다.
- 22. AVAudioRecorder 기본 레코드 설정
- 23. 첫 실행시 기본 설정이 표시되지 않습니다.
- 24. Honeycomb/ICS에서 사용자 정의 기본 설정이 깨졌습니다.
- 25. Android 기본 설정 onBackButton
- 26. SQL/코드 블로킹 읽기의 스냅 샷 격리
- 27. C에서 파일 읽기의 이상한 동작
- 28. 파이썬에서 라인 파일 읽기의 효율성
- 29. XML 읽기의 성능 비용을 최소화
- 30. 원자 읽기의 유스 케이스는 무엇입니까
예를 들어 주셔서 감사합니다. 더 이상 기본 설정을 제공하고 설정이 잘못 되었다면 애플리케이션을 시작하는 것이 좋은 생각인지 궁금합니다. –
설명 주셔서 감사합니다. –