CodeSOD: 많은 일을 하면서도 아무것도 이루지 못... 노트

CodeSOD: 많은 일을 하면서도 아무것도 이루지 못하다

레거시 금융 애플리케이션에는 C# 메서드인 ValueAGPFund가 포함되어 있는데, 이는 수많은 부작용으로 비판받고 있습니다. 이 메서드는 입력 매개변수와 내부 클래스 멤버를 수정하며 여러 가지 별개의 작업을 수행합니다. 또한 CheckPreviousValuationIfRequired라는 메서드와 상호 작용합니다. 이 후자의 메서드는 특정 매개변수를 기반으로 이전 평가 데이터를 검색하고 처리하도록 설계되었습니다.ValueAGPFund가 CheckPreviousValuationIfRequired를 호출하고, 이것이 다시 ValueAGPFund를 호출하는 순환 종속성에서 심각한 문제가 발생합니다. 또한 CheckPreviousValuationIfRequired의 반환문이 잘못되어 null 값을 액세스하려고 할 때 NullReferenceException을 발생시킵니다. 이 오류는 이전 평가 데이터가 존재할 때만 ValueAGPFund를 재귀적으로 호출하려던 의도된 로직을 가릴 가능성이 높습니다. 현재 구현은 이 함수가 null을 반환하거나 예외를 발생시킨다는 것을 의미합니다.이러한 명백한 결함에도 불구하고 애플리케이션은 올바르게 작동하는 것으로 보고되었습니다. 제출자는 문제가 되는 코드인 CheckPreviousValuationIfRequired와 ValueAGPFund와의 상호 작용이 중복될 수 있다고 의심합니다. 그러나 예상치 못한 부작용이 있는지 또는 시스템의 다른 부분이 발생한 NullReferenceException에 의존하는지 확인하지 않고 제거하는 것을 망설이고 있습니다. 제출자는 단위 테스트가 일반적으로 이러한 위험을 완화할 것이라고 비꼬아 말하며, 단위 테스트의 부재 또는 부적절함을 암시합니다. 핵심 문제는 이러한 상호 의존적인 메서드의 복잡하고 잠재적으로 잘못된 로직에 있습니다.