현재 여러 유형의 파일 처리를 처리하는 시스템을 설계하고 있습니다. 다음 인터페이스를 정의했습니다.오류로 처리 할 수있는 구성 요소의 예외 또는 반환 상태
다양한 파일 유형을 처리하기위한 구체적인 구현을 만드는 것을 목표로합니다. 컨트롤러 클래스는 것입니다 책임에 대한 :
- 하나의 호출에는 processFile (이러한 IFileProcessor 구체적인 구현
- 하나의 컬렉션을 가져 오기 파일의 내용
- 읽기 새로 추가 된 파일
- 에 대한 폴더를보고) 각 파일의 내용을 전달하는 경우
- 구성 요소가 파일을 처리 할 수없는 경우 false를 반환하고 그렇지 않으면 내용을 처리하고 true를 반환합니다.
- IFileProcesso가 없으면 r 구현은 컨트롤러가 '처리되지 않은'폴더로 이동 한 파일을 처리 할 수 있습니다.
- 구성 요소가 파일을 성공적으로 처리하는 경우 '처리 된'폴더로 이동합니다.
- 구성 요소에 의해 예외가 발생하는 경우 'Failed'폴더로 이동했습니다.
IFileProcessor의 구현을 만들면 먼저 해당 파일을 유형에 따라 처리 할 수 있는지 확인합니다. 즉 그러면 최상위 유효성 검사 (즉, 파일 헤더 검사)가 수행됩니다. 이러한 검사 중 하나라도 실패하면 전체 파일이 유효하지 않은 것으로 간주되어 컨트롤러에 던져 질 것입니다.
그러나 최상위 유효성 검사가 성공하면 구성 요소는 파일의 각 행을 처리합니다. 이 시점부터 개별 라인이 처리 (즉, 검증)에 실패하고 나머지 프로세스가 계속 진행되는 것이 허용됩니다.
여기가 문제가되는 곳입니다. 유효성 검사 오류가 발생했는지 기록한 다음 프로세스가 끝날 때 예외를 던지거나 열거 형을 반환하도록 ProcessFile() 시그니처를 변경하는 것이 가장 좋습니다. 처리되지 않은, 처리되지 않은 처리 된 오류의)?
내가 읽은 바로는 예외가 상태 코드보다 선호되는 경로 인 것처럼 보이지만 프로세스가 계속 진행될 수있는이 특정 상황에서는 프로세스가 완료되지 않은 상태로 인공 예외를 사용하는 것이 잘못된 것으로 보입니다. %.
나는 이것에 대한 사람들의 생각에 정말로 관심이있다.
이 문제를 지나치게 수정하지 마십시오. 파일에 문제가있을 때 행동을 취하기 위해서는 인간이 필요합니다. 당신이 할 수있는 의미있는 것은 아무것도 없으며, 좋거나 쓸모없는 것입니다. 이 사람이 볼 수있는 맑은 진단이 있는지 확인하십시오. –
Hans,이 경우의 요구 사항은 구성 요소가 할 수있는 모든 것을 처리해야한다는 것입니다. 파일의 각 행은 해당 행의 참조가 시스템에 알려 졌는지 확인하는 유효성 검증 절차를 거칩니다. 참조가 알려진 경우 행이 처리되고 그렇지 않으면 유효성 검증 오류가 추후 검사를 위해 기록됩니다. – watsite