일부 기존 코드가 수정 중입니다. 메서드가있는 Object를 가지고 doSomething()을 말할 수 있습니다. 이 메소드는, 특정의 assertion가 실패했을 때에 예외를 슬로우합니다. 그러나 새로운 요구 사항으로 인해 특정 시나리오에서 예외를 throw하지 않고 해당 방법을 진행하는 것이 좋습니다.여기 글로벌 상태를 사용하고 있습니까?이 작업을 수행하는 더 좋은 방법이 있습니까?
이제 예외를 무시해야하는 곳에서이 메서드를 직접 호출하지 않습니다. 이 doSomething()은 다른 많은 메소드에서 내부적으로 호출되는 감사 메소드와 비슷하며, method1(), method2() 등을 말합니다.
예외를 무시해야하는 곳에서는 method1), 이제 method1() 예외를 throw하지 않으려는. 그래서 method1()을 기본 인수 method1 (ignoreException = false)을 취하고 method1 (true)을 호출하도록 수정했습니다.
또한 추가 인수를 사용하기 위해 doSomething()을 수정했으며 method1은 ignoreException을 doSomething (ignoreException)으로 다시 전달합니다.
잠재적으로이 추가 인수를 취하기 위해 모든 메소드, method2, method3 등을 변경해야합니다.
이 코드를 보면 누군가가이 플래그를 전달하는 대신 클래스의 멤버 변수로 가져온 다음 method1()을 호출하기 전에 setter를 호출 할 수 있다고 제안했습니다. 내 개체가 obj라고 말한 다음해야합니다. obj.setIgnoreXXXException (true); obj.method1(); obj.setIgnoreXXXException (false);
이것은 전 세계적인 상태를 유지하는 것 같고 나던 것 같습니다. 하지만 인수를 전달하는 다른 방법도 서투른 것처럼 보입니다. 많은 부분을 변경해야합니다 (이 클래스에는 하위 클래스가 있고 일부 메서드는 가상이므로 일부를 수정해야합니다)
더 좋은 방법이 있습니까? 이. 레거시이기 때문에 단위 테스트가 없기 때문에 기존 코드를 많이 수정하고 싶지는 않습니다.
여기에주의 사항을 설명해 주셔서 고맙습니다. 함수 인수를 사용합니다. – Arvind