Was ist an folgendem Quelltextfragment falsch?

private static final ResourceBundle b = 
  ResourceBundle.getBundle("com.thomaskuenneth.swing.datepicker.resources.DatePicker");

So richtig falsch (ich mag solche Formulierungen) ist daran gar nichts. Dennoch ist es Code, den Sie so nicht schreiben sollten. Zum einen wurde die Variable b kleingeschrieben. Das ist unschön, weil sie den Charakter einer Konstanten hat. Zum anderen – und das ist der wirklich wichtige Teil – ist das Fragment wartungsunfreundlich. Ich bin darüber gestolpert, als ich die Datumsauswahl meiner TKSwingComponents in Notes and Tasks übernehmen wollte. Um sie in die Schuhschachtel legen zu können, musste ich die Paketstruktur der Datumsauswahl anpassen. Das führte natürlich dazu, dass die benötigten Ressourcen nicht mehr gefunden wurden.

private static final ResourceBundle B = 
  ResourceBundle.getBundle(DatePicker.class.getPackage().getName()
                           + ".resources."
                           + DatePicker.class.getSimpleName());

Die Ressourcen werden in dieser zweiten Fassung an einem anderen Ort gesucht. resources liegt nicht mehr unterhalb von datepicker, sondern im Paket der Klasse DatePicker. Das Ablegen von Ressourcen in einem entsprechenden Unterverzeichnis ist natürlich willkürlich. Nach einem automatisierten Refactoring funktioniert aber alles weiterhin ohne Probleme.


This is a (slightly updated) repost of a piece I published on my blog Tommi’s Blog. I deleted the blog in the wake of the GDPR, so the original version is no longer available, or only through the WayBack Machine of the Internet Archive. Please note: code usually has not been updated, so language feature reflect the time the original post was written.