방법 반환값에 대한 두 가지 처리 모드

1596 단어 RESTgroovyidea
현재 반환 값을 처리하는 데는 두 가지 코드 스타일이 있습니다.
하나는 다음과 같다.
result = method1();
if (result is error){ // 
         ...// 
         return result;
}
result = method2();
if (result is error){ // 
         ...// 
         return result;
}
do something...

다른 하나는 다음과 같습니다.
try{
         method1() //  ErrorCodeException

         method2() //  ErrorCodeException

         do something...
}catch(ErrorCodeException e){
         //  ErrorCodeException Result
         return result;
}

하지만 저는 두 번째 방식을 추천합니다. 이유는 주로 세 가지가 있습니다.
1. 재구성의 측면에서 볼 때 만약에 한 방법에 여러 개의 리턴 출구가 있다면 방법이 팽창한 후에 하나의 코드를 추출하여 단독으로 하나의 방법을 형성해야 할 때 비교적 어렵고 이상한 방식으로 단독방법을 쉽게 추출할 수 있다.
2. 코드 재사용의 측면에서 볼 때 첫 번째는 만약method1,method2 방법이 여러 곳에서 호출된다면 호출해야 할 부분은 대부분 결과에 대해 오류 코드를 판단하고 결과를 되돌려야 한다. 이것은 중복된 코드이다. 이렇게 중복된 코드는 ic에서 어디서나 볼 수 있다. 나는 오류 코드 이상을 던지는 방식으로 이런 중복된 것을 줄이고 싶다.
3. 포장의 측면에서 비정상적인 결과의 처리를 방법의 내부에 포장하면 내중성을 높일 수 있다.
이렇게 하는 두 가지 단점:
1. method1, method2를 하나의 try에 끼워야 하는데...catch에서 ErrorCodeException을 result로 변환합니다.
2. 상황에 따라 반환값을 스스로 처리해야 하는 방법도 있다. 이상을 던지지 않으려면 이상을 던지지 않는 방법을 제공해야 한다.
3. 성능에 있어서 이상 창고에 사용해야 하기 때문에 이것은 일정한 성능 손실을 초래할 수 있다. 분포식 응용이라면 이상이 아니라 오류 코드를 최대한 고쳐야 한다. 왜냐하면 이상은 간단한 오류 코드 방식보다 서열화된 원가가 높기 때문이다.
내가 두 번째 방식을 사용하는 것은 이러한 문장 변체에서 온 것이다. 어떤 방법은 시작 부분에서 파라미터를 검사하는 위문, 예를 들어 비공, 비0 검사를 한다. 만약에 파라미터가 불합격하면 IllegalArgumentException을 던진다. (오류 코드를 되돌려야 하기 때문이 아니라면 IllegalArgumentException을 던질 수 있다.)

좋은 웹페이지 즐겨찾기