Als ich zuvor Java für die Arbeit verwendet habe, gab es einen Prozess, der schwer zu verstehen war, deshalb habe ich ihn überarbeitet.
Es war so vor dem Refactoring.
private void doProcess() {
A a = initial();
if (!chkfnc1(a)) {
throw new XXXException(x1);
}
if (!chkfnc2(a)) {
throw new XXXException(x2);
}
if (!chkfnc3(a)) {
throw new XXXException(x3);
}
execute(a); //Ausführungsverarbeitung nach Prüfung
}
private boolean chkfnc1(a) {}
private boolean chkfnc2(a) {}
private boolean chkfnc3(a) {}
Instanz abrufen-> Instanzauthentizität prüfen (n-mal) -> Ausführungsprozess Es ist ein Fluss.
Angenommen, chkfncN
fließt in einer Sequenz und hat eine Ordnungsabhängigkeit.
Wenn diese Situation anhält und sich die Prüfanforderung um eins erhöht, ist es schwierig zu bestimmen, wann die Funktion "chkfncN" geprüft wird, und es ist widerlich.
Enum Wenn ich Enum höre,
Und so weiter. Ich denke, das größte Merkmal, das ich denke, ist, dass die Bestellung garantiert ist.
Ebenfalls Teil der Definition von Haskells Typklasse Enum
class Enum a where
succ :: a -> a --Funktion mit folgenden Werten
pred :: a -> a --Funktion, die den vorherigen Wert anzeigt
Ist definiert.
Auch in Java Enum
for (DaysOfWeekEnum day : DaysOfWeekEnum.values()) {
}
Es kann in dieser Reihenfolge verarbeitet werden
Java Enum ** Funktionen können in Enum ** definiert werden https://qiita.com/KeithYokoma/items/9681b130ea132cfad64d
Basierend auf dem oben Gesagten können Sie dies tun.
public enum MyChecker {
CHK1 {
@Override
public boolean chkfnc(A a) {}
@Override
public String erroMsg(){}
},
CHK2 {
@Override
public boolean chkfnc(A a) {}
@Override
public String erroMsg(){}
};
CHK3 {
@Override
public boolean chkfnc(A a) {}
@Override
public String erroMsg(){}
};
public abstract boolean chkfnc(A a);
public abstract String errorMsg;
}
Verwenden Sie das vorherige Beispiel
private void doProcess() {
A a = initial();
for (MyChecker val : MyChecker.values()) {
if (!val.chefnc) {
throw new XXXException(val.erroMsg);
}
}
}
Das Innere von doProcess wurde aktualisiert und die Ansicht wurde besser. Da die Bestellung durch die Verwendung von Enum garantiert wird, ist es fast so, als ob Sie den Betrieb garantieren möchten.
Es gab nicht viele Artikel, in denen Enums Valies in Java so verwendet wurden, also habe ich es geschrieben. Die Situation, in der es verwendet werden kann, ist begrenzt, aber wenn Sie erkennen, dass enum die Reihenfolge garantiert, denke ich, dass auch andere Anwendungen funktionieren werden.
Recommended Posts