Wann Assert in Client & Common GWT-Code verwenden

8

Es gibt einige Fragen zu StackOverflow, in denen die Frage diskutiert wird, wann man eine assert-Anweisung anstelle einer Ausnahme verwenden sollte. (Beispiele hier , hier , hier , hier und hier .

>

Allerdings habe ich den Verdacht, dass die konventionelle Weisheit von Assert-gegen-Throw auf der Annahme beruht, dass Sie innerhalb einer JVM laufen. Im GWT-Universum, in dem Ihr Java in JavaScript transliteriert wird und im Kontext eines Browsers ausgeführt wird, fühlt sich die Kompromisslösung anders an: Behauptungen werden immer kompiliert, wenn sie in einem Browser ausgeführt werden, und alles, was die Größe Ihres JavaScript kleiner hält ist ein Gewinn, vor allem wenn Ihre Webanwendung auf einem Handy laufen muss. Asserts werden jedoch in DevMode ausgeführt, sodass sie dort während der Entwicklung nützlich sind.

Meine Fragen sind also: Hat jemand sich Gedanken über eine Reihe von Best-Practice-Regeln gemacht, die regeln, wie man die assert-Anweisung in GWT verwendet? Ich habe mich von Mitgliedern meines Teams fragen lassen, "da das Assert kompiliert wird, macht es Sinn sie zu haben?", Und ich hätte gerne eine gute Antwort für sie.

Hat auch jemand Einblick in die Philosophie, die die Entwickler von GWT bei Google zu diesem Thema haben? Mit Blick auf den GWT-Quellcode scheinen sie es häufig zu verwenden.

    
pohl 16.05.2011, 20:54
quelle

2 Antworten

14

Die FAQ von Google lautet

  

Verwenden Sie nur Assertionen für Debugging-Zwecke, nicht Produktionslogik, da Assertions nur im Entwicklungsmodus von GWT funktionieren. Standardmäßig werden sie vom GWT-Compiler kompiliert, so dass sie im Produktionsmodus keine Auswirkungen haben, außer Sie aktivieren sie explizit.

Dies unterscheidet sich nicht von den Antworten auf die Fragen, auf die Sie verwiesen haben. Ob der Java-Code von javac in der üblichen Weise kompiliert wird oder von GWT nach JavaScript kompiliert wird, "Assert" bedeutet: "Wenn das nicht stimmt, habe ich einen Fehler." Im Gegensatz dazu Code der Form

%Vor%

bedeutet "wenn das wahr ist, dann haben wir eine unerwartete Situation, die das Programm behandeln muss."

Wie für die Mitglieder des Teams, die den Punkt der Behauptung nicht sehen, erklären Sie, dass sie eine Menge von Einheitentests haben sollen, die mit aktivierten Assertionen laufen. Wenn die Tests eine gute Codeabdeckung haben und keine von ihnen das Versagen der Assertion verursacht, wird gezeigt, dass die durch die assert-Anweisung angegebene Annahme gilt.

    
gatkin 17.05.2011, 09:25
quelle
4

Der GWT-Compiler entfernt sie standardmäßig, aber Sie können sie bei Bedarf auch beibehalten. Wenn Sie der Meinung sind, dass Assertionen im kompilierten Code nützlich sind, fügen Sie beim Aufruf von com.google.gwt.dev.Compiler das Befehlszeilenargument -ea hinzu. Der Compiler wandelt dann Java in JavaScript um.

%Vor%     
Eric Z. Ayers 22.05.2011 00:32
quelle