Frage

Ich habe gelesen, wie die Ausfall schnelle Art der Programmierung in Sprachen wie Erlang mit vielen kürzeren Programmen am Ende als der defensive Stil in den meisten anderen Sprachen. Ist das richtig für alle Arten von Programmen und was ist die Begründung dafür?

War es hilfreich?

Lösung

Fehler schnell Programme sind nicht unbedingt kürzer als defensive Stil Programme: Es hängt von der Implementierung und die notwendigen Maßnahmen Ihre defensiven Code sicher machen

.

Im Fall von Erlang, der Ausfall schnell Programme sind in der Regel kürzer, weil der deklarativen Stils und wie die VM stellt sicher, dass Fehlerfälle für Sie zu generieren. Als Beispiel in der Funktion:

day(1) -> sunday;
day(2) -> monday;
day(3) -> tuesday;
day(4) -> wednesday;
day(5) -> thursday;
day(6) -> friday;
day(7) -> saturday;

Jede der Funktion übergeben unerwarteten Wert führt zu einem Fehler führen, die von einem anderen Prozess abgefangen und behandelt werden kann (dh .: ein Supervisor). Solche Fehler werden auch gefährden nie das System als Ganzes und nicht-Code erforderlich, um die Funktion selbst hinzugefügt werden - es durch vorbestimmte Verhaltensweisen alles getan, was außerhalb des normalen Ausführungspfad ist.

In einer dynamischen Sprache, wo ausfall schnell ist nicht die Norm, würden Sie müssen manuell die Grenzen überprüfen und eine Ausnahme selbst werfen. Dann müssen Sie die Ausnahme lokal fangen (Top-Level-try ... enthalten Fänge), wenn Sie nicht das ganze System wollen nach unten gehen. Der Fehlerbehandlungscode hat in der Regel während der üblichen Ausführungspfad eingefügt werden.

In einer statischen Sprache, wo schnellen scheitern ist nicht die Norm, dann, wie lange Sie den Code, die Sie sehr hängen vom Typ System. Wenn die Sprachtypen definieren können, wo die Grenzfälle für dich vom Compiler Ende überprüft, dann müssen Sie in der Regel nicht das in dem Code verarbeiten, außerhalb von nichtdeterministische Ereignissen (Dateien nicht funktionieren, unerwartete Benutzereingabe, etc.) In Sprachen mit solchen Systemen des Typs, werden viele Fehler vor der Laufzeit aufgefangen werden und so kann man nicht so viele defensive Fälle haben.

Bei der Fehlerbehandlung nicht vermieden werden kann, unterstützt Sprachen ausfall schnell Idiome (wie Erlang) wird wohl klaren Code als Sprachen erlauben, die nicht (statisch oder nicht) zu tun, vor allem, weil der Code für Sonderfälle ist nicht gemischt mit dem Code für den idealen Ausführungspfad.

Andere Tipps

Siehe Abschnitte 4.3 und 4.4 von Joe Armstrong These .

Die fehler schnelle Art der Programmierung wird auf eine bessere Lesbarkeit des Codes und Fehlersuche konzentriert. Die Benutzerführung ist ein sekundäres Ziel: a. Benutzer seltsam auftreten können Fehlermeldungen oder Programmfehler, aber die größere Qualität von Code ermöglicht es Programmierern leicht, den Fehler zu finden und das Problem zu beheben

Defensive Stil Programmierung, sondern konzentriert sich auf die Validierung Eingabe von Benutzer und von anderen Teilen des Codes. Der Code ist ausführlicher, weil der Programmierer Eingang sorgfältig zu prüfen hat und anmutig im Fall eines Fehlers fehlschlagen. Dies führt zu mehr Code (aus dem Programmierer Sicht) und eine robustere Anwendung (aus Nutzersicht).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top