XML-Parsing / public-Member-Variablen / Design-Frage

Status
Nicht offen für weitere Antworten.

Sergeant_Pepper

Bekanntes Mitglied
Hallo,

ich habe eine kleine Web-Anwendung geschrieben, die XML-Daten auswertet.

Das Parsing mache ich mit SAX/xerces und verwende mehrere Event-Handler (auf Basis von XMLFilterImpl), die ich per Pipeline "verkette". Funktioniert so wie es soll.

Das Verhalten der verschiedenen Handler möchte ich nun genauer steuern (u.a. Suchstrings festlegen).

Ich will die Steuerungs-Parameter in einer eigenen Klasse bündeln. Diese Klasse "Params" wird mehrere Booleans und einige Strings enthalten, jedoch keine Methoden. Nun denke ich mir, diese Felder "public" zu definieren und keine getter- und setter-Methoden zu schreiben. Es gibt beim Setzen der Werte nichts zu prüfen. Ich meine, das direkte Auslesen der Werte aus dem Objekt ist hier effizienter.

Wie seht Ihr das?
 

Tobias

Top Contributor
Bist du sicher, das nicht doch irgendwann eine Prüfung dazukommt? Gibt es notwendige Bedingungen, zum Beispiel "Das Objekt muss immutable sein"? Soll das Objekt irgendwann mal an anderen, möglicherweise nicht vertrauenswürdigen Code rausgegeben werden?

Ohne diese Informationen ist das alles schwer zu beurteilen. Solange aber keine Prüfungen erforderlich (und auch niemals sein werden, weil alle Properties unabhängig voneinander sind), Strukturbedingungen wie "immutable" nicht vorhanden sind und der umgebende Code vertrauenswürdig ist, bzw das keine Rolle spielt, weil man mit dem Steuerobjekt eh nix kaputt machen kann, spricht nichts gegen öffentliche Properties.
 
M

maki

Gast
>> . Ich meine, das direkte Auslesen der Werte aus dem Objekt ist hier effizienter.

Wir wissen doch wozu voreilige Performance Optimierungen führen... unter anderem zu schlechtem Design und nur sehr selten zu Performanceverbesserungen, denke an die 80/20 Regel.
 
G

Guest

Gast
@Tobias und Maki: vielen Dank für Eure Meinungen :)

Tobias hat gesagt.:
Gibt es notwendige Bedingungen, zum Beispiel "Das Objekt muss immutable sein"? Soll das Objekt irgendwann mal an anderen, möglicherweise nicht vertrauenswürdigen Code rausgegeben werden?

Immutable heißt, dass das Objekt nie verändert werden darf? Habe dazu gerade im "Krüger" etwas über das Immutable-Pattern gelesen. Wenn alle Pattern so simpel wären...
Der Haken: ich mag keine Methoden oder Konstruktoren mit vielen Parametern. Daher ja auch die Bündelung meiner Parser-Parameter in einer Klasse.

Tobias hat gesagt.:
Ohne diese Informationen ist das alles schwer zu beurteilen. Solange aber keine Prüfungen erforderlich (und auch niemals sein werden, weil alle Properties unabhängig voneinander sind), Strukturbedingungen wie "immutable" nicht vorhanden sind und der umgebende Code vertrauenswürdig ist, bzw das keine Rolle spielt, weil man mit dem Steuerobjekt eh nix kaputt machen kann, spricht nichts gegen öffentliche Properties.

Kaputt machen kann man mit dem Objekt eigentlich nichts. Bislang ...
 

Tobias

Top Contributor
Das mit dem "simpel" beim Immutable-Pattern: Die Idee ja, die Umsetzung nicht immer.

Wegen Methoden und Konstruktoren mit vielen Parametern: Grundsätzlich richtig, aber man kann auch "Einmal"-Setter benutzen:

Code:
public void setMyString(String myString) {
    if(this.myString != null) {
        throw new IllegalStateException("Daref nur einmal gesetzt werden!");
    }
    this.myString = myString;
}
 
M

maki

Gast
>> Der Haken: ich mag keine Methoden oder Konstruktoren mit vielen Parametern. Daher ja auch die Bündelung meiner Parser-Parameter in einer Klasse.

Kannst dir ja mal das Builder Pattern ansehen ;)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JSON Parsing von youtube video comment replies Allgemeine Java-Themen 4
H HTML Parsing errors Allgemeine Java-Themen 9
C Parsing Java Allgemeine Java-Themen 9
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
G Public oder Private oder Protected Sinn Allgemeine Java-Themen 14
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
T Abgeleitetes Interface public ohne Schlüsselwort "interface"? Allgemeine Java-Themen 3
ReinerCoder Klasse kann nicht public deklariert werden Allgemeine Java-Themen 2
I Java: public final Werte: Gute oder schlechte Praxis? Allgemeine Java-Themen 6
C Email mit public-key verschlüsseln Allgemeine Java-Themen 0
W Warum muss void main() public sein? Allgemeine Java-Themen 3
X public Getter ersetzen (Reflection?!) Allgemeine Java-Themen 3
Thallius Warum ist meine private porperty public? Allgemeine Java-Themen 7
T Schlüsselworte mehrere public-Klassen in einem Paket Allgemeine Java-Themen 7
B public class JarFilter extends FileFilter « Falsch? Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
S auf public void Methode zugreifen ohne static Allgemeine Java-Themen 11
J public array? Allgemeine Java-Themen 5
N Polygon Klasse mit public Membern Allgemeine Java-Themen 4
P Private und public Allgemeine Java-Themen 2
V Public SVN benutzen? Allgemeine Java-Themen 11
D public boolean return Allgemeine Java-Themen 8
O Methoden in abstrakter Klasse: public oder protected? Allgemeine Java-Themen 16
lumo Row Header ist public, zeigt die funktion aber nicht public Allgemeine Java-Themen 8
F packages, public methods, assertions und argumentchecking. Allgemeine Java-Themen 3
MQue public void serialEvent(SerialPortEvent event) Allgemeine Java-Themen 4
M public class Cannix() Allgemeine Java-Themen 5
G Probleme bei String Übergabe um Public Key zu erzeugen ? Allgemeine Java-Themen 6
M ist "public abstract class * extends" möglich? Allgemeine Java-Themen 2
J Warum heißt es eig. "public static void main" ? Allgemeine Java-Themen 4
T public void init wird nicht aufgerufen Allgemeine Java-Themen 12
S public void actionPerformed Allgemeine Java-Themen 5
D Kein public Konstruktor Allgemeine Java-Themen 4
G private vs. public JRE Allgemeine Java-Themen 3
N this im public static void Allgemeine Java-Themen 3
C public boolean containsAll(Collection c) Allgemeine Java-Themen 2
ruutaiokwu NullPointerException auf member, die per konstruktor gesetzt wird (multithread-kontext) Allgemeine Java-Themen 2
D API - Beispiel + static member in inner (non static) class Allgemeine Java-Themen 2
S toString() für alle Member einer Klasse. Allgemeine Java-Themen 6
L Abstrakte Klasse: Member zwingend überschreibbar machen Allgemeine Java-Themen 2
R Member-Variable erzwingen Allgemeine Java-Themen 17
F Werte von Member-Variablen erst im Konstruktor setzen? Allgemeine Java-Themen 7

Ähnliche Java Themen


Oben