메서드 호출, 예를 들어 ClassA.search (a, b, flag)가 3 개의 컨트롤러에서 사용되고있는이 코드가 발생했습니다. 다음은이 방법의 단순화 된 버전입니다.이것은 방법을 재사용/공유하는 좋은 방법입니까?
public List<Result> search(Object a, Object b, boolean flag) {
//do some code logic here, common to the 3 controllers
//at the middle there is:
if (flag) {
//code that affects 2 Controllers
} else {
//code affects only 1
}
//some more common code
//some more code with the flag if else
}
코드가 재사용되었으므로이 방법을 사용하는 것이 좋습니다. 또는 코드 재사용을 가능하게하지만 메소드 호출자 (클라이언트) 코드 사용자 정의 (이 코드를 세 가지 다른 메소드로 분할했지만 여전히 공통 코드 리팩터링 메소드를 선언 할 수 있음)에이 플래그를 도입하지 않는 것이 더 좋은 방법일까요?
로컬 변수를 필드로 변환하여 작동시키지 않는다면 이에 동의 할 것입니다. –
왜 지역 변수가 잘못 되었습니까? 매개 변수를 통해 반복적으로 전달해야하는 상태가 중요 할 경우 생성자의 마지막 필드로 초기화 된 상태로 한 번만 객체를 만들고 한 번만 사용하십시오. 스테로이드 기능 ;-). –
그렇지만 필드가있는 클래스 (및 생성자?)를 추가하는 것은 하나의 플래그를 피하기위한 많은 작업입니다. ;) –