괴물을 계승했습니다.리팩토링 용 리팩터링 아이디어가 필요합니다
.NET 1.1 응용 프로그램이 Healthcare Claim Payment (ANSI 835) 표준을 따르는 텍스트 파일을 처리하지만 가장 괴괴 망측 한 것으로 가장합니다. 처리되는 정보는 건강 관리 청구, EOB 및 환급과 관련됩니다. 이 파일은 처음 몇 위치에 식별자가 있고 해당 레코드 유형에 대한 스펙에 따라 형식화 된 데이터 필드로 구성됩니다. 일부 레코드 ID는 특정 유형의 트랜잭션과 관련된 레코드 그룹을 구분하는 제어 세그먼트 ID입니다.
파일을 처리하려면 작은 괴물이 첫 번째 레코드를 읽고 수행하려고하는 트랜잭션의 종류를 결정한 다음 현재 처리중인 트랜잭션의 종류에 따라 다른 레코드를 처리하기 시작합니다. 이렇게하려면 중첩 된 if를 사용합니다. 많은 레코드 유형이 있기 때문에, 몇 가지 결정을 내려야합니다. 각 결정에는 이전 결정에 근거하여 수행해야하는 몇 가지 처리 및 기타 2-3 가지 결정이 포함됩니다. 즉, 중첩 된 if에는 많은 중첩이 있음을 의미합니다. 그것은 내 문제가있는 곳입니다.
길이가 715 인 경우 중첩됩니다. 네, 맞습니다. 7 백 - 십오 - 하이틴 라인. 나는 코드 분석 전문가가 아니기 때문에 몇 가지 프리웨어 분석 도구를 다운로드하고 49의 McCabe Cyclomatic Complexity 등급을 제안했습니다. 그들은 꽤 높은 숫자라고 말해줍니다. 애틀란타 지역의 꽃가루 수가 100 대를 기준으로 높고 뉴스에서 "오늘의 꽃가루 수는 1,523"이라고합니다. 이것은 제가 본 Arrow의 반 패턴의 가장 훌륭한 예 중 하나입니다. 가장 높은 곳에, 들여 쓰기는 15 개의 탭을 깊게합니다.
제 질문은 리팩터링하거나 구조 조정할 때 어떤 방법을 제안하겠습니까?
아이디어를 검색하는 데 시간을 할애했지만 나에게 좋은 발판이되었습니다. 예를 들어, 레벨에 대한 보호 조건을 대체하는 것이 한 가지 방법입니다. 나는 그 중 하나만 가지고있다. 하나는 둥지를 틀고, 14 개는 가야합니다.
아마도 도움이 될 수있는 디자인 패턴이있을 것입니다. 명령 사슬이이 문제에 접근 할 수있는 방법일까요? .NET 1.1에 있어야한다는 것을 명심하십시오.
모든 아이디어에 감사드립니다.
흥미로운 아이디어. 이 코드에서 어떻게 보이는지 설명하는 데 문제가 있습니다. –