Zunächst wurde der Mechanismus "Ausnahme" erstellt, um die Beschreibung zu aktivieren. ** "Was soll ich tun, wenn der Prozess aus diesem Grund übersprungen wird?" ** (Ich glaube nicht, dass ich wütend bin). .. Die "Ausnahme", die gesendet wird, ist genau dieser "Grund für dies und das", und selbst wenn gesagt wird, dass ** "die Verarbeitung aus irgendeinem allgemeinen Grund weggeblasen wurde", kann sie nur als "dumm" zurückgegeben werden. Es ist **.
nicht gut. Natürlich sage ich nicht, dass es völlig nutzlos ist, aber ** ich habe vorher etwas zu tun **.
** Entscheide "wer, wie weit, was zu tun ist". ** ** ** Angenommen, es gibt eine Operation zum "Lesen einer bestimmten Datei, Analysieren und Halten als Objekt". Zu diesem Zeitpunkt (obwohl es ein wenig detailliert ist) erscheinen vier Zeichen als Zeichen: "derjenige, der den Speicherort einer bestimmten Datei übergibt", "derjenige, der eine bestimmte Datei liest", "derjenige, der das Gelesene analysiert" und "derjenige, der sie enthält".
Was und wie viel sollten diese Jungs tun? Im gesunden Menschenverstand muss davon ausgegangen werden, dass "derjenige, der den Speicherort einer Datei übergibt", mindestens "den Speicherort der Datei", "(wahrscheinlich) als Zeichenfolge" und "ohne Verlust" übergeben wird. Es wird____geben. Basierend auf dieser Annahme muss "derjenige, der eine bestimmte Datei liest" nicht darüber nachdenken, "gibt so etwas wie der Speicherort dieser Datei wirklich den Speicherort der Datei an?" Selbst wenn Sie zum Lesen gehen und die Datei nicht haben, können Sie sich dennoch beschweren (= Ausnahme): "Hey, ich habe nach den Informationen gesucht, die Sie mir gegeben haben, nicht wahr?"
Um es cool auszudrücken, es heißt CoC, ** Design by Contract **. Was, "Gibt es keine Ausnahme!"? Worüber redest du ** Ich sage, dass die Ausnahme für die Verwendung gilt, wenn der Vertrag nicht eingehalten wird **.
** Wenn das Argument falsch ist, seien Sie ruhig und lösen Sie eine IllegalArgumentException aus **. das ist alles.
...... Es ist zu chaotisch, also werde ich etwas tiefer graben. Angenommen, Sie bereiten die folgende API vor. Es akzeptiert zwei Argumente und gibt das Ergebnis von a / b zurück. (Es ist nur ein Beispiel, bitte verzeihen Sie mir, dass ich zu viel Ersatz bin.)
ex1.java
public int div(int a, int b){
return a/b;
}
Es wurde jedoch kritisiert, dass dies nicht gut sei. Dies liegt daran, dass div (1,0)
eine ArithmeticException verursacht (es ist möglicherweise besser, den Leuten von .net DivideByZeroException zu sagen, ich bin auch eine DBZE-Sekte ...).
Was würden Sie dann tun? Nun, wir werden eine Validierung haben.
Die Antwort lautet natürlich "** in einigen Fällen **". Dies sollte erstellt werden, wenn die beabsichtigte Verwendung darin besteht, "einzelne Ausnahmen bis zu einem gewissen Grad zusammenzufangen", wie im vorherigen Beispiel. Es ist immer noch unansehnlich, viele Ausnahmen zu erwischen. Wenn Sie dagegen keinen Grund haben, etwas zu machen **, sollten Sie das vorhandene ** verwenden. Es ist nicht schwer. Kurz gesagt, die Neuerfindung von Rädern ist lächerlich, es geht also nur darum anzuhalten.
** Halten Sie den Vertrag und genießen Sie die Codierung! !! ** ** **
Außerdem ** frage ich Sie, also ahmen Sie sich nicht einfach nach, um das Formsystem zu zerstören **. (Obwohl ich denke, dass dies einem Idioten gesagt werden sollte, der Codewerte mit rohen Zahlen behandelt ...)
Recommended Posts