Haben Sie Teamrichtlinien zu Ausnahmen? [geschlossen]


8

Mein Team hat kürzlich ein Projekt von einem Team geerbt, bei dem die Anzahl der Entwickler so gering war, dass sie einige Arbeiten abladen mussten. Eines der Projekte, die wir geerbt haben, war ein mit verschachteltem Code übersätes Projekt und eine schreckliche Ausnahmebehandlung (Ausnahmen wurden tatsächlich als goto-Anweisungen behandelt und daher als Teil des normalen Programmablaufs verwendet.).

Alles in allem war es ein haariger Codeball, den jemand seit einigen Jahren abgehustet hatte.

Jetzt haben wir schon seit einiger Zeit einige Teamrichtlinien, aber alle Aspekte der Struktur von Objekten, der Codierungsstile und was nicht. Die Ausnahmebehandlung wurde jedoch nicht behandelt.

Ich frage mich also, ob Sie in Ihren Teams Richtlinien zur Ausnahmebehandlung haben und wenn ja, wie Sie diese durchsetzen.


Sie meinen soziale oder technologische Durchsetzung? Es gibt viele statische Code-Analyse-Tools zum Erkennen missbrauchter Ausnahmemuster.
Matthew

Nun, beide wirklich.
Morten

Es kann einfacher sein, den Code umzugestalten, um zuerst die Voraussetzungen zu überprüfen und frühzeitig von der Funktion zurückzukehren, wenn eine Vorbedingung nicht erfüllt ist. Eine Reihe prominenter Gurus betrachten finally(Rollback-Logik) als den wertvolleren Teil eines Ausnahmebehandlungssystems.
Rwong

Antworten:


4

Obwohl es sich nicht um offizielle Richtlinien für ein Team handelt, in dem ich jemals war, sollten Ausnahmen meines Erachtens nur für wirklich außergewöhnliche Bedingungen verwendet werden oder wenn Sie (aus irgendeinem Grund) unbedingt Ihre Hände hochwerfen und Ihren Anrufer lassen müssen ( oder sprudeln Sie von Ihrem aktuellen Punkt aus, möglicherweise bis zum Benutzer). Sie wissen, dass es absolut unmöglich ist, dass eine bestimmte Komponente unter den aktuellen Bedingungen funktioniert, und dass es nicht möglich ist, eine Wiederherstellung ohne eine externe Intervention (anderes Modul oder Benutzer) durchzuführen .


1

Wir haben keine spezifischen Regeln für die Ausnahmebehandlung für unser Team, außer den üblichen: Verwenden Sie keine Ausnahmen für "normales" Verhalten, schlucken Sie nicht nur stillschweigend Ausnahmen usw.

Die statische Analyse kann Ihnen dabei helfen, einige davon zu erfassen (abhängig von der verwendeten Sprache), aber Sie sind mit Codeüberprüfungen sicherer.


1

Derzeit haben wir keine expliziten Richtlinien, hauptsächlich weil niemand in meinem Team etwas falsch macht. (Im Gegensatz zu vielen anderen Themen besteht ein allgemeiner Konsens darüber, wann und wie Ausnahmen verwendet werden sollten.)

Aber ich würde sie definitiv am selben Tag implementieren, an dem ich eine Ausnahme sehe, die als goto missbraucht wird.


0

Ich denke, dass Ausnahmen Ausnahmen reiben sollten. Ich denke, es ist missbräuchlich und erzeugt Overhead, wenn Ausnahmen als Workflow in Ihrem Code verwendet werden. Halten Sie sie also ausführlich und verwenden Sie sie nur, wenn etwas Unerwartetes passiert ist.

Hinweis: Taskleiste, um die häufigsten Fehler zu vermeiden, z. B. das Nichtübergeben der Verbindungsdatenbank an eine Funktion oder ähnliches. Verwenden Sie sie jedoch lieber, wenn der primäre Schlüssel nicht vorhanden ist und Sie ihn benötigen, um etwas zu tun.


0

Es tut mir leid für Sie, dass Sie Code von Leuten erben mussten, die Ausnahmen missbrauchen, um goto-ähnliche Aussagen zu machen.

Ich versuche immer, sie abzufangen, wenn Benutzereingaben oder etwas außerhalb meiner Kontrolle auftreten können (z. B. IOExceptions), aber alles, was ein Codierungsfehler sein könnte (z. B. NullPointerException), würde ich versuchen, mit Asserts zu Beginn der Entwicklung abzufangen.

Der Leistungseinbruch durch diese Art der Codierung ist sehr negativ. Ich frage mich, ob das Unternehmen schrumpfte, weil schreckliche Entwickler sich in ein unverständliches Chaos stürzten ...

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.