Das Szenario ist, dass ich mindestens zweimal auf einen Wert zugreifen muss. I.e. Ich benutze Logger, um zu verfolgen, was in der Anwendung passiert. Ich möchte den Namen des Objekts protokollieren, an dem diese Funktion arbeitet, und später etwas mit dem gleichen Namen (d. H. Prüfen, ob es eine Zeichenfolge enthält oder in ein Array einfügen).Verwenden von Variablen zum Speichern von Werten oder zum direkten Abrufen von Werten aus den Objekten?
in Variable den Namen speichern:
foo(Bar bar){
String name = bar.getName();
logger.info("I am working with "+name);
this.doSomethingWith(name);
}
Oder rufen getName() zweimal:
foo(Bar bar){
logger.info("I am working with "+bar.getName());
this.doSomethingWith(bar.getName());
}
Ich verstehe, dass in dem ersten Szenario, werde ich einen neuen String erstellen, weisen einen Wert dazu und dann diesen Wert zweimal abrufen. Auf diese Weise verwende ich mehr Speicherressourcen, richtig?
Im zweiten Szenario greife ich zweimal auf die Objektleiste zu und dann zweimal auf ihren Namen. Ich nehme an, das ist kein DRY-Ansatz. Aber auf der anderen Seite wiederhole ich mich nicht in der Erinnerung, richtig?
Welcher Ansatz ist besser?
In der ersten Methode erstellen Sie _not_ nicht einen neuen String. Beide Methoden sollten also den gleichen Speicherverbrauch haben. – Fildor
Es könnte sich lohnen, den generierten Byte-Code mit einem Decompiler zu überprüfen, um festzustellen, ob Ihr Problem wirklich ein Problem ist. 'javac' könnte diesen Anwendungsfall erkennen und auf die eine oder andere Weise optimieren, egal wie Sie ihn in Java schreiben. – akaIDIOT