2017-03-15 4 views
0

이 열거를 리팩토링합니다. 어떻게 이것을 리팩토링 할 수 있습니까?는 어떻게 규칙의 결과를 저장하기위한 열거가 자바

+0

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html 당신은 결과 두 개의 필드와 일반 클래스 만들 수 – davedwards

+6

: (상수가 통과 실패로 열거,)를 OutcomeType , 그리고 이유 (문자열) –

+0

하나 이상의 실패 이유가있을 수 있기 때문에, 다음 리팩터링에 많은 의미가 없습니다 ... –

답변

0

이다, 더 나은 @JBNizet의 답을 원하신다면 "결과"당신이 열거 형식이어야합니다 반환하고, 컴파일시에 알고있는 모든 이유 왜 실패 발생할 수있는 경우 각 유형에 대해 실패 토큰을 정의 할 수 있습니다. 동적 실패 메시지의 경우 런타임에만 알 수있는 오류 이유에 대해 Jay Schauer/JBNizet의 주석 솔루션에 가서 합격/불합격 토큰 및 메시지 문자열에 대한 멤버가있는 별도의 클래스를 만듭니다.

enum Outcome { 
    PASS("Congratulations"), 
    FAIL_BLANK("too many blank stares"), 
    FAIL_RED("too many Red Herrings"), 
    FAIL_NET("network issues"); 

    private String msg; 
    private Outcome(String message) { 
     msg = message; 
    } 

    public String getMsg() { return msg; } 
} 
1

편집 : 그래서 여기에 구현

public class Outcome { 
    public enum OutcomeOptions { 
     PASSED, FAILED; 
    } 
    private final OutcomeOptions outcome; 
    private final String message; 
    public Outcome(OutcomeOptions outcome, String message) { 
     this.outcome = outcome; 
     this.message = message; 
    } 
    public OutcomeOptions getOutcome() { 
     return outcome; 
    } 
    public String getMessage() { 
     return message; 
    } 
} 
+0

여러 가지 이유로 실패한 여러 결과를 반환해야하는 경우 어떻게해야합니까? 결과 .FAILED는 동일한 객체를 참조합니다 – Sujatha

+0

이게 나에게 잘 어울립니다. 실패 이유 목록을 반환해야합니다. – Sujatha