Im Falle von Code, bei dem Sie vor dem Beenden einer Funktion eine Ressourcenbereinigung durchführen müssen, besteht ein wesentlicher Leistungsunterschied zwischen diesen beiden Methoden.
Bereinigen Sie die Ressource vor jeder return-Anweisung
void func() { login(); bool ret = dosomething(); if(ret == false) { logout(); return; } ret = dosomethingelse(); if(ret == false) { logout(); return; } dootherstuff(); logout(); }
Bereinigen Sie die Ressource in einem finally-Block
void func() { login(); try { bool ret = dosomething(); if(ret == false) return; ret = dosomethingelse(); if(ret == false) return; dootherstuff(); } finally { logout(); } }
Ich habe einige grundlegende Tests in Beispielprogrammen durchgeführt und es scheint keinen großen Unterschied zu geben. Ich bevorzuge das so sehr finally
- aber ich habe mich gefragt, ob es bei einem großen Projekt zu Leistungseinbußen kommen wird.
if(!cond)
, dann ist es Java, das mich dazu gebracht hat. In C ++ schreibe ich so Code sowohl für Boolesche als auch für andere Typen - dh int x;
if(!x)
. Da ich dies mit Java nur für verwenden darf booleans
, habe ich die Verwendung von if(cond)
& if(!cond)
in Java vollständig eingestellt .
(someIntValue != 0)
als zu vergleichen, als Boolesche Werte zu bewerten. Das riecht für mich und ich überarbeite es sofort, wenn ich es in freier Wildbahn sehe.