Nov 09

Im SCJP wird auch zwischen geeigneter und ungeeigneter/ nicht zweckmäßiger Nutzung unterschieden. In diesem Zusammenhang möchte ich die unangebrachte Nutzung von Assertions vorstellen:

  1. Nochmal zur Errinerung: Assertions sind Codeüberprüungen, die bei false zu einem Programabbruch führen. Natürlich können diese auch mittels try/catch/finally abgefangen werden, es ist aber nicht zweckmäßig.
  2. Assertions sollten nicht in mit public deklarierten Methoden verwendet werden, da nicht immer klar sein kann, woher diese Methode aufgerufen wird und welche Werte benötigt und genutzt werden. Aufrufe innerhalb von privaten Methoden sind jedoch überschaubar und deswegen zweckmäßig.
  3. Nochmal zur Erinnerung: Assertions können jederzeit ein- und ausgeschaltet werden. Deswegen sollten diese nicht für Werte, die dem Aufruf des Programmes mitgegeben wurden, benutzt werden. Hier sind andauernd geworfene Exceptions passender.
  4. Anweisungen/ Schleifen, die niemals erreicht werden sollen, sollten vorher, aber nicht in der Anweisung/ Schleife per Assertion überprüft werden
  5. Assertions sollten das Programm im selben Status verlassen, in dem es vor der Überprüfung war. Deswegen ist es wichtig, Seiteneffekte  zu vermeiden. Assertions sollten deswegen nie Änderungen/ Deklarationen von Variablen abfangen.

Un-Zweckmäßiger gebraucht bedeutet nicht un-legitime Programmierung. Alle genannten Beispiele compilieren einwandfrei und lassen sich ebenso ausführen.

Es bedeutet lediglich, dass Assertions nicht in einer der genannten Arten gebraucht werden sollten.

Tagged with:
Nov 07

Heute will ich noch etwas tiefer in das An- und Ausschalten von Assertions einsteigen.

java -ea -dsa Test

schaltet Assertions in System-Klassen aus, während

java -esa Test

Assertions nur in System-Klassen einschaltet.

Es  können z.B. auch nur für bestimmte packages Assertions an- oder ausgeschaltet werden:

java -ea -da x… Test

startet die Klasse Test mit angeschalteten Assertions; nur für das Package x und alle Sub-Packages sind Assertions ausgeschaltet.

java -ea -da x.y Test

startet in diesem Beispiel die Klasse Test mit angeschalteten Assertions; nur für das Package x.y sind Assertions ausgeschaltet.

java -ea -da x.y.Angestellter Test

startet die Klasse Test mit eingeschalteten Assertions, nur für die Klasse Angestellter im Package x.y sind Assertions ausgeschaltet.

Analog hierzu können auch nur bestimme Assertions eingeschaltet werden.

Tagged with:
Okt 17

Wie bereits besprochen, wird ein Programm mit

java <Dateiname> oder java <Option>  <Dateiname> gestartet.

Eine Option im Zusammenhang mit Assertions ist die Option -ea, mit der Assertions angeschaltet und somit benutzt werden. Das Gegenstück hierzu ist -da mit der Assertions wieder ausgeschaltet werden.

Mit java -help können weitere Optionen abgefragt werden.

Tagged with:
preload preload preload
http://www.wikio.de Blog Top Liste - by TopBlogs.de Blogverzeichnis - Blog Verzeichnis bloggerei.de Bloggeramt.de Software
Webbhotell Top Blogs