Hallo zusammen, ich bin Java-Neuling und habe die Aufgabe bekommen, eine Anwendung in Java neu zu implementieren. Hierzu habe ich das folgende C++-Coding vorliegen:
Meine Implementierung in Java sieht nun folgendermaßen aus (Die anderen verwendeten Klassen bestehen bereits und dürfen nicht angepasst werden):
Das Problem ist, dass dieser Code viel schlechter lesbar ist als die C++-Version. Gibt es hier irgendeinen Trick, das einfacher zu schreiben?
Code:
UX_MONITOR_START_MEASUREMENT
InuConnection oIc = InuConnectionManager::getInstance()->createConnection(strInuaddr);
if(!oIc) goto end;
InuStream oIs = oIc->open();
if(!oIs) goto unwind_inu;
ArtemisStream oAs = new InuToArtemisStreamAdapter(oIs);
if(!oAs) goto unwind_artemis;
// ...
cleanup:
oAs->close();
delete oAs;
unwind_artemis:
oIs->close();
delete oIs;
unwind_inu:
oIc->close();
delete oIc;
end:
UX_MONITOR_STOP_MEASUREMENT
Meine Implementierung in Java sieht nun folgendermaßen aus (Die anderen verwendeten Klassen bestehen bereits und dürfen nicht angepasst werden):
Code:
UxMonitor.startMeasurement(this.getClass());
try{
InuConnection ic = InuConnectionManager.getInstance().createConnection(inuaddr);
InuStream is = ic->open();
ArtemisStream as = new InuToArtemisStreamAdapter(is);
}
catch(InuConnectionFailed ex1) {
UxMonitor.stopMeasurement();
return;
}
catch(IOException ex2) {
if (is != null) is.close();
ic.close();
UxMonitor.stopMeasurement();
return;
}
// ...
if( ... ) {
as.close();
is.close();
ic.close();
UxMonitor.stopMeasurement();
return;
}
// ...
as.close();
is.close();
ic.close();
UxMonitor.stopMeasurement();
Das Problem ist, dass dieser Code viel schlechter lesbar ist als die C++-Version. Gibt es hier irgendeinen Trick, das einfacher zu schreiben?