ich habe eine kleine designfrage zu folgendem beispiel-code:
es geht um die zugriffe auf die felder. ich bin mir oft nicht sicher, ob ich mittels get() oder direkt auf die felder zugreifen soll. gibt es zb eine sicherheitsabfrage wie hier:
dann kann ich von fall zu fall entscheiden, ob ich die sicherheitsabfrage auch bei zugriffen innerhalb des objekts benötige oder nicht. bei mir ist es aber öfters so, dass es diese abfragen zunächst nicht gibt, aber diese schon kommen könnten (okay, eventuell sollte ich hier besser vorausplanen...).
oder zb folgende situation:
wird zu:
hier wäre es natürlich angenehmer, wenn man im code überall die get()-Methode stehen hat statt eines direkten zugriffs. umgekehrt ist der direkte zugriff wohl schneller. (oder kann dies der compiler wegoptimieren? (wenn ja, nur innerhalb der klasse oder auch bei der abgeleiteten klasse?)
sollte man generell direkt zugreifen und nur, wo es nötig ist bzw. wahrscheinlich mal nötig sein wird, mittels get(), oder ist es durchaus auch üblich mal vorsichtshalber mittels get zuzugreifen? würdet ihr es bei der abgeleiteten klasse so sehen, dass die protected variable ein zeichen des programmierers, dass man direkt zugreifen kann/soll? (denn wenn der entwickler damit rechnen würde, dass das feld eventuell verschwindet bzw. sich irgendwie ändert, dann würde er dieses ja private machen und get() und public/protected set() anbieten.)
in fremden code sehe ich meistens direkte zugriffe. ist dies im normalfall bzw. zweifelsfall die bessere wahl? [/code]
Code:
class A {
private Object field1;
protected Object field2;
public Object getField1() ..
public Object getField2() ..
void doSomething1() {
..
System.out.println(" ... " + getField1());
System.out.println(" ... " + this.field1);
}
}
Class B extends A {
void doSomething2() {
..
System.out.println(" ... " + getField2());
System.out.println(" ... " + this.field2);
}
}
es geht um die zugriffe auf die felder. ich bin mir oft nicht sicher, ob ich mittels get() oder direkt auf die felder zugreifen soll. gibt es zb eine sicherheitsabfrage wie hier:
Code:
Object getField1() {
if(isInitialized()) {
return Field1;
}
else throw new Exception...
}
dann kann ich von fall zu fall entscheiden, ob ich die sicherheitsabfrage auch bei zugriffen innerhalb des objekts benötige oder nicht. bei mir ist es aber öfters so, dass es diese abfragen zunächst nicht gibt, aber diese schon kommen könnten (okay, eventuell sollte ich hier besser vorausplanen...).
oder zb folgende situation:
Code:
String getData() {
return this.data;
}
wird zu:
Code:
String getData() {
return this.data1 + ", " + data2;
}
hier wäre es natürlich angenehmer, wenn man im code überall die get()-Methode stehen hat statt eines direkten zugriffs. umgekehrt ist der direkte zugriff wohl schneller. (oder kann dies der compiler wegoptimieren? (wenn ja, nur innerhalb der klasse oder auch bei der abgeleiteten klasse?)
sollte man generell direkt zugreifen und nur, wo es nötig ist bzw. wahrscheinlich mal nötig sein wird, mittels get(), oder ist es durchaus auch üblich mal vorsichtshalber mittels get zuzugreifen? würdet ihr es bei der abgeleiteten klasse so sehen, dass die protected variable ein zeichen des programmierers, dass man direkt zugreifen kann/soll? (denn wenn der entwickler damit rechnen würde, dass das feld eventuell verschwindet bzw. sich irgendwie ändert, dann würde er dieses ja private machen und get() und public/protected set() anbieten.)
in fremden code sehe ich meistens direkte zugriffe. ist dies im normalfall bzw. zweifelsfall die bessere wahl? [/code]