Getter mehrfach aufrufen -> ist das guter code?

Bitte aktiviere JavaScript!
Ich sehe hier alten Code von meinen Vorgängern, und mir fällt auf, das es hier wohl Mode ist, die getter lieber mehrfach aufzurufen, anstatt sich die Instanz zu holen. In anderen Programmiersprachen ist so etwas verpönt. Gibt es Vorteile das so zu machen?

Beispiel:

Java:
if (dataObjectTO.getProfile() != null) {
    dataObject.setProfileName(Utils.encodeHtml(dataObjectTO.getProfile().getProfileName()));
    if (dataObjectTO.getProfile().getFirstName() != null) {
        dataObject.setFirstName(Utils.encodeHtml(dataObjectTO.getProfile().getFirstName()).replace("\n", "<br/>"));
    }
    if (dataObjectTO.getProfile().getSecondName() != null) {
        dataObject.setSecondName(Utils.encodeHtml(dataObjectTO.getProfile().getSecondName()).replace("\n", "<br/>"));
    }
    if (dataObjectTO.getProfile().getCompanyName() != null) {
        dataObject.setCompanyName(Utils.encodeHtml(dataObjectTO.getProfile().getCompanyName()).replace("\n", "<br/>"));
    }
    dataObject.setCompanyLocation(Utils.encodeHtml(dataObjectTO.getProfile().getCompanyLocation()));
    dataObject.setCreationLocation(Utils.encodeHtml(dataObjectTO.getProfile().getCreationLocation()));
}
Warum nicht so:

Java:
private String encode(String plain){
    return Utils.encodeHtml(plain).replace("\n", "<br/>")
}
....
Profile profile = dataObjectTO.getProfile():
if (profile != null) {
    dataObject.setProfileName(Utils.encodeHtml(profile.getProfileName()));
    if (profile.getFirstName() != null) {
        dataObject.setFirstName(encodel(profile.getFirstName()));
    }
    if (profile.getSecondName() != null) {
        dataObject.setSecondName(encode(profile.getSecondName()));
    }
    if (profile.getCompanyName() != null) {
        dataObject.setCompanyName(encode(profile.getCompanyName()));
    }
    dataObject.setCompanyLocation(Utils.encodeHtml(profile.getCompanyLocation()));
    dataObject.setCreationLocation(Utils.encodeHtml(profile.getCreationLocation()));
}
 
Nichts spricht gegen die zweite Variante, es spricht eher was dafür :)

Wenn man encode etwas ergänzt, kann man noch auf das if verzichten, das würde ich daran noch ändern...
 
Ich würde vielleicht dem encode() einen `Supplier<String>` und `Consumer<String>` spendieren, und das ganze Ding "map" nennen:
Java:
static <T> void map(Supplier<String> from, Consumer<String> to) {
  String plain = from.get();
  if (plain != null) {
    to.accept(Utils.encodeHtml(plain).replace("\n", "<br/>"));
  }
}
Dann kann der Mapping-Code mit Method References so aussehen:
Java:
if (profile != null) {
  ...
  map(profile::getFirstName,  dataObject::setFirstName);
  map(profile::getSecondName, dataObject::setSecondName);
  ...
}
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben