Ist es eigentlich ungünstig direkt in einem Konstruktor bereits umfangreichen Logikcode auszuführen?

hmmmm...
Ist architektonisch wohl nicht das günstigste aber warum nicht. Wenne diese Logik in deinem Progrmm öfter nutzen willst, solltest du sie in eigene Methoden kapseln.

viele Grüße
 
Lass es mich so ausdrücken, eigentlich sollte man es nicht tun, aber wenn nciht mehr logik benötigt ist amche cihd as selber auch gerne mal und wirklich schaden tut es nicht (mal sehen ob ich totgeflamt werden von wegen oo)
 
Ich meinte so etwas:
Java:
public class Foo {
  private final String foo;
  private final Bar bar;

  public Foo(String foo) {
    this.foo = foo;
    this.bar = BarUtilities.newBar(String foo, this);
  }
}

Java:
public class Bar {
  ...
  public Bar(Foo foo, String eins, String zwei, String 3) { ... }
  ...
}

Java:
public class BarUtilities {
  private BarUtilities() {}

  public static final Bar newBar(String foo, Foo foo) {
    String[] split = foo.split(".");
    if (split.length <> 3) {
      throw new IllegalArgumentException("...");
    }

    if (split[0].equals("test")) {
      return new Bar("passed", split[1], split[2], foo);
    } else {
      return new Bar(split[0], split[1], split[2], foo);
    }
}

Ist zwar etwas sinnfreie Logik in dem Beispiel aber es ist ja noch früh 😛
 
Deswegen auch der kleine Fehler im ersten Codelisting 😉

Korrigiert sollte es so sein (Unterschied in Zeile 7)
Java:
public class Foo {
  private final String foo;
  private final Bar bar;
 
  public Foo(String foo) {
    this.foo = foo;
    this.bar = BarUtilities.newBar(foo, this);
  }
}
 

Zurück
Oben