Wann muss man eine Variable mit set-/get-Methoden in eine Bean schreiben?

Status
Nicht offen für weitere Antworten.

melly

Mitglied
Hallo,

ich habe ein kleines Java-Programm in Netbeans geschrieben (Webanwendung).



Ich habe folgende Variable:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

Diese Variable bleibt immer gleich.



Kann ich diese Variable nun einfach einmal in der Page1.java deklarieren und initialisieren und über df drauf zugreifen:

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

z.B. String s = df.toString();




oder muss ich die Variable in der ApplicationBean deklarieren und mit set- und get-Methoden auf die Variable zugreifen:

private SimpleDateFormat df;

public SimpleDateFormat getDf() {
return df;
}


public void setDf(SimpleDateFormat df) {
this.df = df;
}

und diese dann in der init() initalisieren: df = new SimpleDateFormat("yyyy-MM-dd");

und über die getMethode darauf zugreifen: String s = ApplicationBean1.getDf().toString();

???



Bin Anfänger und bin mir noch unsicher, wann ich Variablen in die Beans mit set- und get-Methoden schreiben muss und wann ich Variablen einfach in der Page1.java lassen kann. Hat dazu vielleicht jemand einen allgemeinen Tip?

Danke, Grüße
Melly
 

Ebenius

Top Contributor
Variablen werden immer dort deklariert wo sie hingehören. Wenn deine DateFormat für die ganze Applikation verwendet werden soll, dann kannst Du sie in Deine ApplicationBean werfen und einen getter dazu bauen. Wenn das Format nur zur Page1-Klasse gehört (was auch immer die tut), dann solltest Du sie dort deklarieren.

In aller Regel schreibt man alles mit get- und set-Methoden was außerhalb einer Klasse benutzt wird. Bei booleans weicht man beim getter ein kleines bisschen ab und nimmt statt getVisible() isVisible().

Außerdem: Tu Dir ein paar Gefallen... Die Methode hieße besser "getDefaultDateFormat()" oder "getSharedDateFormat" und Deine ApplicationBean-Klasse benötigt doch auch keine "1" im Namen. Und "Page1" ist auch kein guter Name. Immer alles so benennen wie es inhaltlich Sinn ergibt. Stell Dir stets vor, Du musst in einem Jahr verstehen was etwas tut und wofür es da ist.

Ebenius
 
M

maki

Gast
>> Für diesen Fall sollte man ja auch immer eine Doku erstellen, aber zu viele sind leider zu faul... Ich bilde da sicher keine Ausnahme, aber ich bemühe mich!

Eigentlich spart man sich die Doku und schreibt sauberen, aussagefähigen Code ;)
 

airliner

Mitglied
nur was willst du bei einem blutigen Anfänger machen, der vielleicht gerademal so eine If-Schleife enträtseln kann, auch nur weil er weiß, dass If englisch für "falls" ist...

Insofern, gerade bei größeren Projekten ist eine Doku schon sehr wichtig.
 
S

SlaterB

Gast
> nur was willst du bei einem blutigen Anfänger machen

ihm als nächste beibringen, dass if keine Schleife ist! ;)


----

warum sollte es schwieriger sein, zu erlernen,
Code:
getSpecialObjectX()
zu definieren, ob mit Doku oder ohne, statt
Code:
/** returns special object x */
getY()
 

airliner

Mitglied
"Schlechten" Code zu Dokumentieren ist Zeitverschwendung ;)

Is richtig, da geb ich voll und ganz recht. Man sollte schon beides machen, gut lesbaren Code schreiben und (gerade bei größeren Projekten, bei kleinen kohnt das noch nich) eine Doku mitliefern. Dient einfach der Benutzerfreundlichkeit, wenn ein anderer Entwickler ran muss. Dann brauch er nich den ganzen Code lesen sondern nur die Doku (erstmal zumindest).
 
M

maki

Gast
Die Realität sieht anders aus ;)

Meist hat man nicht mal genug Zeit sauberen Code zu schreiben, geschweige denn Änderungen zwischen Code und Doku zu synchronisieren.

Moderne (agile) Methoden (zB Scrum, XP) haben sich daran angepasst.
Da besteht die Doku hauptsächlich aus:
1. sehr sauberem Code
2. Unittests

Dazu gehört auch, dass keine Kommentare im Quelltext sind, da sie "schlechten" Code Dokumentieren (Javadoc mal ausgenommen, da müssen aber mindestens die Exceptions rein)
 

airliner

Mitglied
Wir sind in unserem kleinen Entwicklerteam gerade dabei mal Scrum auszuprobieren und ich schreibe darüber auch meinen Praxistransferbericht. Mal schauen, ob es wirklich so viel bringt und wie einfach die Umsetzung ist.
 

airliner

Mitglied
Direkt einen außenstehenden SCRUM Master haben wir nicht.
Sind nur wir drei und das Projekt was wir haben ist erstmal nur als Forschungsprojekt gedacht...

Als visuelle Hilfe nutzen wir TargetProcess, wenn es dir was sagt.
 
M

maki

Gast
Agile methoden leben weniger von Tools als mehr von der "Kultur".

Wenn da keiner ist der diese weitergeben kann, wird es sehr schwer.
 

Ebenius

Top Contributor
Javadoc schreibe ich eigentlich für jede Methode die protected oder public ist. Dafür geht bei mir circa 5% der Entwicklungszeit drauf und die sind's mir wert. Ich habe mir angewöhnt, dass immer ein Kommentar an jedem Argument steht das null sein darf. Nach meinem Geschmack sollte in der Javadoc einer Methode auf jeden Fall erwähnt sein,
  • was die Methode tut
    [HIGHLIGHT="Java"]/** Appends the given String to a given string builder. */[/HIGHLIGHT]​
  • welche Parameter null sein dürfen und was dann passiert (meist ist das nicht offensichtlich)
    [HIGHLIGHT="Java"]/** @param appendTo the string builder to append to, if {@code null} a new
    string builder will be created */[/HIGHLIGHT]​
  • in welche Fällen der Rückgabewert vom Normalfall abweicht
    [HIGHLIGHT="Java"]/** @return the given string builder, or a new string builder, if
    {@code appendTo} was {@null} */[/HIGHLIGHT]​
  • welche Exceptions in welchem Fall geworfen werden
    [HIGHLIGHT="Java"]/** @throws IllegalArgumentException if the given string was {@code null} */[/HIGHLIGHT]​
  • sofern es auf die Methode zutrifft und nicht offensichtlich ist, eine Notiz für überschreibende Methoden
    [HIGHLIGHT="Java"]/** Note: all other {@code appendTo()} methods are delegating to this
    method. If subclassing this class, it is usually safe to override
    this method and leave all others untouched. */[/HIGHLIGHT]​
Kommentare innerhalb des Quelltextes benutze ich meist, wenn
  • von vornherein abzusehen ist, dass an einer bestimmten Stelle eine Optimierung sinnvoll wäre, diese aber (aus Zeitgründen, oder um erstmal vorwärts zu kommen) erst später eingebaut werden soll
    [HIGHLIGHT="Java"]/* TODO: hash the last 1000 client IDs to speed-up reconnect -- 20090226 Ebenius */[/HIGHLIGHT]​
  • eine Methode geändert werden soll, sobald ein neueres Framework verfügbar ist (derzeit muss ich zum Beispiel meist noch mit Java 5 kompatibel programmieren)
    [HIGHLIGHT="Java"]/* FUTURE_JRE6: use AWTs new SplashScreen-Class -- 20090226 Ebenius */[/HIGHLIGHT]​
  • ein bestimmter Teil des Codes einen Fehler beinhaltet der aus irgendwelchen Gründen nicht sofort behebbar ist
    [HIGHLIGHT="Java"]/* FIXME: This call ends in a deadlock if some strange condition is met -- 20090226 Ebenius */[/HIGHLIGHT]​
  • Ein bestimmter Teil eines Quelltexts aus nicht ersichtlichem Grund hinzugefügt wird
    [HIGHLIGHT="Java"]/* The busy-flag must be ERASED BEFORE the call to doIt() is made;
    otherwise strange stuff might happen */[/HIGHLIGHT]​
  • Ein bestimmter Teil eines Quelltexts einen Workaround für einen Bug (ob nun aus eigenen oder aus fremden Bibliotheken spielt keine Rolle) enthält
    [HIGHLIGHT="Java"]/* WORKAROUND: #1067 [Bug short description]
    Savely removes all listeners prior to reinstalling the UI -- 20090226 Ebenius */[/HIGHLIGHT]​

"Schlechten" Code zu Dokumentieren ist Zeitverschwendung ;)
Schlechten Code zu dokumentieren und/oder kommentieren ist ganz besonders dann keine Zeitverschwendung, wenn man ihn nicht einfach ändern kann (Bibliothek in der Firma, wird x-mal verwendet, man kann die Design-Fehler nicht einfach rauswerfen) aber gerade auf die Nase gefallen ist und heraus gefunden hat warum. Wer dann nicht dokumentiert, ist selbst schuld.

Ebenius
 
Zuletzt bearbeitet:
M

maki

Gast
>> Schlechten Code zu dokumentieren und/oder kommentieren ist ganz besonders dann keine Zeitverschwendung, wenn man ihn nicht einfach ändern kann (Bibliothek in der Firma, wird x-mal verwendet, man kann die Design-Fehler nicht einfach rauswerfen)

Wieso kann man den nciht einfach ändern?
Zumindest eine neue Version der Lib sollte doch möglich sein, denn refactoren dauert nicht viel länger als Dokumentieren, korrigiert Probleme aber nachhaltig.
 

Noctarius

Top Contributor
>> Schlechten Code zu dokumentieren und/oder kommentieren ist ganz besonders dann keine Zeitverschwendung, wenn man ihn nicht einfach ändern kann (Bibliothek in der Firma, wird x-mal verwendet, man kann die Design-Fehler nicht einfach rauswerfen)

Wieso kann man den nciht einfach ändern?
Zumindest eine neue Version der Lib sollte doch möglich sein, denn refactoren dauert nicht viel länger als Dokumentieren, korrigiert Probleme aber nachhaltig.

Ich stimme Ebenius zu.
Ich denke dabei nur an unseren momentanen Workaround zum MySQL JDBC Encoding Bug.

Nun sind wir hier nur mit 2 Programmierern an dem Projekt, wenn aber mehr Programmierer dabei sind, wieso sollte man die Anderen nicht mit Kommentaren drauf hinweisen.

Und eine Lib muss nicht zwangsläufig nur in einem Projekt werden, womit ich diese nicht zwangsläufig mal nebenbei austauschen kann, nur weil ich gerade die Fehlersituation getroffen habe.
 

Ebenius

Top Contributor
Du kannst ne Menge Fehler nicht einfach ausbügeln nur weil Du dazu Lust hast. Und ob Refactoring trivial oder komplex ist, hängt ja wohl deutlich von Art und Schwere des Fehlers ab, oder? Außerdem unterliegen API-Änderungen oft Beschränkungen von Versionierungsmodellen. Zum Beispiel: Die API darf sich erst in der nächsten Major-Version ändern. Was aber alles noch in der nächsten Major-Version ändert liegt vielleicht gar nicht in Deiner Hand. Die Dokumentation zu verbessern kann aber durchaus einfach in einem neuen Release mit selber Major-Version passieren...

Und noch viele andere Szenarien würden mir einfallen, in denen alte Fehler eben nicht einfach behoben werden können, die Fallstricke aber durchaus tiefer gelegt werden können, indem man kommentiert und dokumentiert.

Schlechter Code sollte in meinen Augen sogar besonders gut dokumentiert werden. Das macht ihn überhaupt nicht besser, aber oft wesentlich weniger gefährlich.

Ebenius
 
M

maki

Gast
Vielleciht bin ich ja nur verwöhnt von Maven2, da kann exakt einstellen welche Version der lib man will, branching & releasing etc sind auch kein Problem mehr (max 2-3 zeilen in der shell), so dass im "Hausinterne" jars ohne weiteres geändert werden können, egal ob sie nur in 1 oder 100 Projekten verwendet werden :)
Jedes Projekt benutzt halt die Version die es braucht, wenn alte Projekte noch eine alte/fehlerhafte Version brauchen, nimmt man die eben.

Externe libs mit Bugs sind eine andere Sache, da reicht aber oft ein link in das Issuemanagement tool der lib.

Bis jetzt sehe ich immer noch kein Problem damit schlechten Code zu refactoren anstatt zu kommentieren, denn letzteres ist eben zeitverschwendung imho.
 

Ebenius

Top Contributor
[...] wenn alte Projekte noch eine alte/fehlerhafte Version brauchen, nimmt man die eben.
Genau. Und wenn in einem dieser Projekte jemand die fehlerhafte/schlechte Version einer API benutzen muss, wäre es doch super, wenn er wenigstens in der Schnittstellenbeschreibung Hinweise auf die Probleme fände.

Wann immer man einen Fehler problemflos beheben kann statt ihn zu dokumentieren, sollte man das tun. Wenn man's nicht kann, sollte man wenigstens vernünftig dokumentieren. Oft macht man sogar beides: Aktualisiert die Schnittstellenbeschreibung für den alten branch und behebt den Fehler im HEAD...

Ebenius
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Wann muss eine Methode - protected sein wann public wann. Java Basics - Anfänger-Themen 5
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
I Logik Zahlungsprozess - Wann Bestellobjekt anlegen? Java Basics - Anfänger-Themen 2
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
berserkerdq2 Java streams, wann nutze ich ::, also 2x Doppelpuntk bei Streams? Java Basics - Anfänger-Themen 5
W Wann und warum hashcode und equals? Java Basics - Anfänger-Themen 14
W Wann Rückgabewerte 0, 1, -1? Java Basics - Anfänger-Themen 27
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
F Wann ist es eine Instanz und wann nicht? Java Basics - Anfänger-Themen 1
S Wann Methode abstract? Java Basics - Anfänger-Themen 10
S Wann buffer löschen? Java Basics - Anfänger-Themen 5
R Wie überprüfen wann der User online oder offline ist? Java Basics - Anfänger-Themen 5
C Polymorphie Was genau ist Polymorphie und wann genau sollte man es verwenden? Java Basics - Anfänger-Themen 9
I Wann ist Client plattformunabhängig? Java Basics - Anfänger-Themen 22
M Best Practice Wann eine Methode schreiben ? Java Basics - Anfänger-Themen 14
K Warum funktioniert das und wann erden die Objektmethoden nun ausgeführt? Java Basics - Anfänger-Themen 7
IngoF Welches Event kommt wann? Java Basics - Anfänger-Themen 8
M Wann eigene implementierte HashCode Methode zwingend erforderlich? Java Basics - Anfänger-Themen 1
X Wann schreibt man diese Syntax zeichen { } Java Basics - Anfänger-Themen 8
O Wann nutzt man static? Java Basics - Anfänger-Themen 19
C Klassendesign / Wann Interface implementieren und wann Klassen vererben? Java Basics - Anfänger-Themen 3
S Wann existiert eine Instanz (eigene Klasse) Java Basics - Anfänger-Themen 8
M Wann PATH und wann JAVA_HOME in Windows System 7 setzen? Java Basics - Anfänger-Themen 2
M Wann final verwenden? Java Basics - Anfänger-Themen 5
M Wann eine Wrapper Klasse verwenden und wann einen primitiven Datentypen? Java Basics - Anfänger-Themen 8
D Ab wann getter und setter Java Basics - Anfänger-Themen 2
B Erkennen, wann static oder nicht? Java Basics - Anfänger-Themen 7
E wann welche Konstanten verwenden? Java Basics - Anfänger-Themen 7
P Wann Byte-Stream und wann Character-Stream? Java Basics - Anfänger-Themen 11
T Vererbung Wann wird die Methode paint aufgerufen? Java Basics - Anfänger-Themen 4
M Wann statische Methoden/Attribute? Java Basics - Anfänger-Themen 2
vandread Java Wildcards - Wann super wann extends? Java Basics - Anfänger-Themen 2
K Wann Vererbung und wann Interface verwenden? Java Basics - Anfänger-Themen 12
D Wann genau nutze ich ein solches Interface? Java Basics - Anfänger-Themen 3
K Wann genau brauche ich die Anweisung gleich null? Java Basics - Anfänger-Themen 10
B Wann toString() überschreiben? Java Basics - Anfänger-Themen 21
S OOP Wann Proxies und Interfaces? Java Basics - Anfänger-Themen 3
P Threads Wann läuft es parallel ab ? Java Basics - Anfänger-Themen 4
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Java Stream, wann welche Stream verwenden? Java Basics - Anfänger-Themen 3
T Ab wann ist es ein großes Projekt? Java Basics - Anfänger-Themen 35
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
D Wann genau abstrakte Klasse und wann ein Interface verwenden? Java Basics - Anfänger-Themen 4
W Wann nutze ich "import"? Java Basics - Anfänger-Themen 12
A junit test wann verwendet man "was"? Java Basics - Anfänger-Themen 4
H Wann ein Objekt der Programmklasse in main anlegen Java Basics - Anfänger-Themen 2
G Wann ist ein == Vergleich bei Gleitkommazahlen fahrlässig? Java Basics - Anfänger-Themen 8
T Wann for und wann while?? Java Basics - Anfänger-Themen 35
-horn- Wann wird alles NaN erzeugt? Java Basics - Anfänger-Themen 22
S Wann wird eine Klasse geladen? Java Basics - Anfänger-Themen 17
C this - wann verwende ich das? Java Basics - Anfänger-Themen 10
T Threads - Ab wann wirds Kritisch?! Java Basics - Anfänger-Themen 7
G field public/private wann Java Basics - Anfänger-Themen 11
GambaJo Ab wann neue Klasse erzeugen? Java Basics - Anfänger-Themen 2
G Wann Arrays, wann Collections? Java Basics - Anfänger-Themen 36
GambaJo Wann try.catch nutzen? Java Basics - Anfänger-Themen 11
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
Y Wann / Wozu inner class Java Basics - Anfänger-Themen 3
K StringBuilder notwendig ab wann? Java Basics - Anfänger-Themen 42
S wann static Funktionen wann nicht Java Basics - Anfänger-Themen 6
N Wann und wie oft finalize Methode verwenden( überschreiben ) Java Basics - Anfänger-Themen 6
Bernasconi Programmierstil / Wann eine neue Datei? Java Basics - Anfänger-Themen 5
M wann, welche schleife Java Basics - Anfänger-Themen 3
M Ab wann ist die Datei sichtbar? Java Basics - Anfänger-Themen 3
G Herausfinden, wann mehrere Threads abgeschlossen sind Java Basics - Anfänger-Themen 3
G Überprüfen wann ein Dokument abläuft? Java Basics - Anfänger-Themen 3
N SAX, StAX, JDOM oder DOM , ab wann welches für XML Java Basics - Anfänger-Themen 14
M Wann ist ein Programm beendet? Java Basics - Anfänger-Themen 6
G Wann am besten getSize() aufrufen? Java Basics - Anfänger-Themen 6
I Festellen wann Methode in anderer Klasse fertig ist Java Basics - Anfänger-Themen 5
M wann statische klassen? Java Basics - Anfänger-Themen 14
M Wann ist initialisieren sinnvoll? Java Basics - Anfänger-Themen 4
B Wann Comparator und wann Comparable Java Basics - Anfänger-Themen 6
R Wann benutzt man << oder >> ? Java Basics - Anfänger-Themen 2
G Klassen: Wann initialisiere ich wo meine Variabeln Java Basics - Anfänger-Themen 6
F Warum muss ich ein SSL cert immer manuell hinzufügen? Java Basics - Anfänger-Themen 46
_so_far_away_ Inventarisierungssystem brauche switch Cases und weiß nicht, wie ich e implementieren muss Java Basics - Anfänger-Themen 5
frager2345 Warum muss ich hier im Konstruktor meine Exeption nicht abfangen ? Java Basics - Anfänger-Themen 4
berserkerdq2 Warum muss man manchmal in der RUnmethode sleep in eine schleife tun? Java Basics - Anfänger-Themen 9
berserkerdq2 wie funktioniert contenthandler, was muss ich bei der Methode startElement und endElement tun? Java Basics - Anfänger-Themen 11
M Eine Methode die erkennt ob die ein gegebene zahl größer oder kleiner sein muss Java Basics - Anfänger-Themen 2
D Bitte um Hilfe muss es schnellstmöglich erledigen Java Basics - Anfänger-Themen 15
A OOP Bidirektionale Muss-Assoziation Java Basics - Anfänger-Themen 1
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
M Was muss ich verändern damit ich es so ausgegeben bekomme wie auf dem Foto? Java Basics - Anfänger-Themen 2
R Was muss ich an meinem Code ändern? Java Basics - Anfänger-Themen 2
L Worauf muss ich achten, wenn ich externe Bibliotheken für meine Anwendungen verwende? Java Basics - Anfänger-Themen 6
L Muss eine HttpURLConnection geschlossen werden? Java Basics - Anfänger-Themen 2
B Email versenden, muss Methode static sein? Java Basics - Anfänger-Themen 7
J Muss ich die externen jars mitgeben? Java Basics - Anfänger-Themen 8
A Wie erkennt die JVM welche class verwendet werden muss? Java Basics - Anfänger-Themen 3
Yjuq Generic Methode - Wie muss die List Definition aussehen? Java Basics - Anfänger-Themen 3
B 4 Strings, Anfangsbuchstaben muss unterschiedlich sein Java Basics - Anfänger-Themen 12
A Doppele Ketten- da muss einer rein! Java Basics - Anfänger-Themen 6
J App.jar muss im Projekt App als Bibliothek vorhanden sein?! Java Basics - Anfänger-Themen 1
S Wie muss ich die Generische Methode schreiben? Java Basics - Anfänger-Themen 6
S Warum muss ich die operationen mit AffineTransform in umgekehrter Reihenfolge ausfuehren..? Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben