# Reihenfolge von Methoden



## nossek (8. Aug 2010)

Guten Morgen,

So wie ich das verstanden habe, können Klassen folgende Arten von Methoden haben (ist das eine sinnvolle Einteilung, bzw. fehlt da was?):

- Konstruktoren
- statische Methoden
- Getter
- Setter
- "Funktonen" (wie zB .toString() )

Gibt es irgendeine Faustregel, in welcher Reihenfolge die Methodenarten im Quelltext der jeweiligen Klasse stehen sollen, oder ist das eher eine Glaubensfrage, wo man sich einmal eintscheidet und das dann konsequent durchzieht?

grüße nossek


----------



## Tobias (8. Aug 2010)

Das ist IMHO eine Glaubensfrage. Bei mir ist die Reihenfolge so:

- statische Variablen
- statischer Initialisierer
- statische Methoden
- Instanzvariablen
- Instanzinitialisierer
- Konstruktoren
- Finalizer
- protected / abstract Methoden (öffentliches API für Unterklassen)
- öffentliche Methoden
- private Methoden werden zwischen den öffentlichen Methoden platziert, jeweils da, wo sie das erste Mal gebraucht wurden
- Getter und Setter

Getter und Setter, die mehr tun, als nur eine Variable bzw Invariante zu setzen, bzw zurückzugeben, wandern in den Block für öffentliche Methoden.

_Punkt protected / abstract Methoden hinzugefügt_


----------



## nossek (8. Aug 2010)

Danke Tobias, das sieht zunächst mal ganz sinnvoll aus.

Hoffe jetzt keinen Glaubenskrieg anzuzetteln  - mich würden aber alternative Meinungen interessieren!

EDIT: In was für Fällen nutzt man überhaupt finalizer, habe irgendwo gelesen daß man sich auf deren Aufruf nicht wirklich verlassen kann.


----------



## Tobias (8. Aug 2010)

Finalizer sind böse, die sollten besser gar nicht benutzt werden.

Aber ab und zu braucht man sie doch irgendwo als (unzuverlässiges) Sicherheitsnetz, z. B. für die Schadensbegrenzung wenn ein Client die close()-Methode nicht aufgerufen hat. Solange sie dann eine Warning loggen, um auf den Programmierfehler des Clients aufmerksam zu machen, ist das auch ok.


----------



## Marco13 (8. Aug 2010)

Viel mehr "verbindliches" als das, was hier dazu steht gibt's da AFAIK nicht. So, dass es Sinn macht, und leicht zu verstehen ist.


----------



## nossek (8. Aug 2010)

Danke für die Antworten. Thema erledigt!


----------

