final vor Funktionsparameter?

Status
Nicht offen für weitere Antworten.

Bit2_Gosu

Bekanntes Mitglied
Hi!

Ich wollte schon immer mal wissen, wann man vor FUnktionsparamter "final" schreiben sollte, wenn es geht, und wann nicht. Ich weiß, was final bedeutet.
Wenn ich final vor schreibe ist dem Leser des Codes vielleicht klarer, dass die Paramatervariable in der Funktion nicht verändert wird, andererseits geht die Übersicht einwenig flöten (bei vielen Parametern).

Also lieber:
Code:
public void reagieren(int index, byte zustand, int ampx, double vorX, double vorSpeed) {}
oder
Code:
public void reagieren(final int index, final byte zustand, final int ampx, final double vorX, final double vorSpeed) {}
?
 

Janus

Bekanntes Mitglied
ich schreib aus gewohnheit vor alle parameter final. für den aufrufenden macht es keinen unterschied, da sich die identität eines parameters nur lokal ändern kann. ich finds unsauber, parameter als variablen zu misbrauchen, da schiebt konsequentes final auch gleich nen riegel vor.

gibt leute die machen z.b. so nen blödsinn
Code:
public int foo(int param)
{
   // stuff with real param
  for( param = 0; param < 23; ++param)
     // some more stuff
}
da bekomm ichs kalte grausen
 

Bit2_Gosu

Bekanntes Mitglied
die Argumentation verstehe ich. Allerdings bist du doch derjenige der programmiert. Willst du dich selber vor solchem Blödsinn schützen?
 

Janus

Bekanntes Mitglied
Bit2_Gosu hat gesagt.:
Allerdings bist du doch derjenige der programmiert. Willst du dich selber vor solchem Blödsinn schützen?
aber ja! meistens ist man es selbst, der sich nen bein stellt ;) du glaubst gar nicht, wie oft es passiert, dass man eigenen code nicht mehr versteht. und anderen, die damit umgehen müssen, fällts noch viel schwerer. deshalb ist es immer empfehlenswert alles menschenmögliche zu tun, code so übersichtlich, nachvollziehbar und verständlich wie möglich zu gestalten.
und wenn ich in java code vor irgendetwas ein "final" sehe, dann ist das nen verdammt guter hinweis darauf, was mit dem ding so alles passieren kann.
 

AlArenal

Top Contributor
Bit2_Gosu hat gesagt.:
die Argumentation verstehe ich. Allerdings bist du doch derjenige der programmiert. Willst du dich selber vor solchem Blödsinn schützen?

In meiner Welt wird Code auch schonmal von mehr als nur einem Menschen gelesen, bearbeitet und genutzt.
 
M

maki

Gast
Code:
public class FinalDemo {
  private String value;

  public void setValue(final String value) {
    value = value;
  }

}
Das ist ein einfacher Fehler, der durch das final gleich vom Compiler bemerkt wird.

Ohne das final gibt's keine Fehlermeldung, höchstens eine Warnung.
 
S

SlaterB

Gast
dann eben das auch nicht ganz ausgestorbene
Code:
public class FinalDemo {
  private String a;

  public void setValue(final String b) {
    b = a;
    // statt a = b;
  }

}
aber selbst dafür gibts ne Warnung, Parametern darf man dann nix zuweisen
(falls die nicht schon gemeint war sondern 'hiding a field')
 
S

SlaterB

Gast
ich persönlich nicht, verschandet den Code,
bei Bedarf erledigen ja die Eclipse-Warnings das ganze transparent,
bin aber auch eher ein 'Parameter-überschreiben'-Fan,

z.B.

public String formatString(String st) {
st = st.replaceAll(x,y);
st = st.replaceAll(a,b);
return st;
}
 

Bit2_Gosu

Bekanntes Mitglied
ok, vielen Dank für Eure Stellungnahmen und Aufklärungen ;)

Ich denke, ich werde es auch nicht machen, weil

1) der code wird unübersichtlicher

2) entweder man hat z.B. eine Funktion fertig programmiert, dann braucht kein zukünftiger Programmierer durch "final" gewarnt zu werden oder man hat die Funktion nicht umbedingt ein für alle mal fertig programmiert, dann weiß man nicht, ob in zukunft ein Parameter nicht überschrieben werden muss.
 

Janus

Bekanntes Mitglied
also ich bin zumindest ein final fan. es ist erstaunlich, wie wenige non-final variablen man in gewöhnlichem code überhaupt benötigt ^^
 
M

maki

Gast
final gibt eine zusätzliche Sicherheit über ein Sprachelement, unabhängig von der IDE.

Anfänger sollten es schon verwenden imho.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Setter-Methode mit final-Attribut Java Basics - Anfänger-Themen 9
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
J final attribute erben Java Basics - Anfänger-Themen 2
L Methode implementieren, Parameter die übergeben werden sind final Java Basics - Anfänger-Themen 4
A final String verrechnen Java Basics - Anfänger-Themen 2
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
A Variablen zum final verändern Java Basics - Anfänger-Themen 4
D Interface Final für Parameter in überschriebenen Methoden? Java Basics - Anfänger-Themen 3
E Sinn: final in Parameterliste verwenden Java Basics - Anfänger-Themen 2
M Iterator cannot refer to a non final... Java Basics - Anfänger-Themen 20
shiroX Klassen Klasse/Methode private final jUnit-Fehler Java Basics - Anfänger-Themen 5
D Kapselung final Variablen mit Getter? Java Basics - Anfänger-Themen 2
R JTextArea final Status ändern Java Basics - Anfänger-Themen 11
F Static final Klasse Java Basics - Anfänger-Themen 0
S Kopierkonstrukter eines Objekts mit final Attributen Java Basics - Anfänger-Themen 6
T Schlüsselworte final Java Basics - Anfänger-Themen 1
M Wann final verwenden? Java Basics - Anfänger-Themen 5
F Methoden Cannot refer to a non-final variable.. verständnisproblem. Java Basics - Anfänger-Themen 7
C Klassen Minesweeper Problem. int needs to be final (inner class problem) Java Basics - Anfänger-Themen 3
R Variablen final String Variable als Attribut veränderbar? Java Basics - Anfänger-Themen 21
U final Instanz Java Basics - Anfänger-Themen 11
W run Methode in Time erzwingt final Java Basics - Anfänger-Themen 3
D Polymorphie final class Java Basics - Anfänger-Themen 2
C Erste Schritte felder, die public final sind Java Basics - Anfänger-Themen 6
H static final vs. final static Java Basics - Anfänger-Themen 3
A final und extends Java Basics - Anfänger-Themen 14
N Bessere Performance durch final: wann denn überhaupt? Java Basics - Anfänger-Themen 28
xehpuk Compiler-Fehler final Variable in try-catch Wert zuweisen Java Basics - Anfänger-Themen 8
J final variablen Java Basics - Anfänger-Themen 3
P Variablen static final boolean Java Basics - Anfänger-Themen 9
S Interface Final und interface Java Basics - Anfänger-Themen 6
ruutaiokwu final wenn immer möglich verwenden? Java Basics - Anfänger-Themen 30
N local variable model is accessed from within inner class; needs to be declared final Java Basics - Anfänger-Themen 4
C Error: The final local variable variable cannot be assigned, since it is defined in an enclosing typ Java Basics - Anfänger-Themen 4
T Verständnis von "final" und "static" Java Basics - Anfänger-Themen 6
T In methode Final Objekte übergeben? Java Basics - Anfänger-Themen 9
C final variable Java Basics - Anfänger-Themen 4
G Poi 3.5-Final zum laufen bringen Java Basics - Anfänger-Themen 2
H final/static Vererbung Java Basics - Anfänger-Themen 4
P Can not refer to a non final variable... Java Basics - Anfänger-Themen 3
H Variablen final? Java Basics - Anfänger-Themen 3
T Warum muss diese Variable final deklariert werden? Java Basics - Anfänger-Themen 5
G final Variablen in enhanched-for Java Basics - Anfänger-Themen 2
V Frage zu final und Class bzw. Class.cast Java Basics - Anfänger-Themen 5
G static final Java Basics - Anfänger-Themen 7
Q Vector verändert trotz final seine Größe Java Basics - Anfänger-Themen 5
A final Variablen und der GarbageCollector Java Basics - Anfänger-Themen 2
G OOP - final Java Basics - Anfänger-Themen 2
B objekt wann als final deklarieren? Java Basics - Anfänger-Themen 2
G Sollte man Klassenvariablen als final deklarieren? Java Basics - Anfänger-Themen 3
J Interface: The final field Variablen.N cannot be assigned Java Basics - Anfänger-Themen 2
B privat mit und ohne final Java Basics - Anfänger-Themen 4
D Static, final Objekte mit Exceptions im Konstruktor Java Basics - Anfänger-Themen 2
W Fehlermeldung "...needs to be declared final" ! Java Basics - Anfänger-Themen 4
N Wieso final ? Java Basics - Anfänger-Themen 4
G <identifier> expected bei public void final Java Basics - Anfänger-Themen 3
A Problem mit innerer Klasse/final Java Basics - Anfänger-Themen 2
G Methoden + variablen als final definieren? Java Basics - Anfänger-Themen 3
F enum oder static final boolean? Java Basics - Anfänger-Themen 18
M enum final Methoden Java Basics - Anfänger-Themen 24
S final String Java Basics - Anfänger-Themen 2
N The serializable class.does not declare a static final . Java Basics - Anfänger-Themen 2
T private final String oder final String? Was ist richtig? Java Basics - Anfänger-Themen 4
F public final void getsignature() | anfänger Java Basics - Anfänger-Themen 7
A class does not declare a static final serialVersionUID Java Basics - Anfänger-Themen 13
G wieso muss Textfield final sein? Java Basics - Anfänger-Themen 6
M Cannot refer to a non-final variable Java Basics - Anfänger-Themen 10
A array nach initialisierung final machen? Java Basics - Anfänger-Themen 17
G public static void main(final String[] args) Java Basics - Anfänger-Themen 4
G Warum muss das Textfeld final sein? Java Basics - Anfänger-Themen 2
P final mit Parametern Java Basics - Anfänger-Themen 3
B Zusicherung als Funktionsparameter Java Basics - Anfänger-Themen 5
S Optionale Funktionsparameter? Java Basics - Anfänger-Themen 4
J Stringarray als Funktionsparameter Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben