Javaで割とどうでもいい問題だけど、コンストラクタやsetterをどう書くかという問題がある。
以下のようなコードがあるとして、
public class foo {
private String name = null;
public void setName(String name) {
this.name = name;
}
}こういう書き方が一般的だと思うけど、これにはいくつか問題がある。
- thisを付け忘れるとフィールドにセットできない
public void setName(String name) {
name = name
}
- メソッドの引数名を間違えてもそれなりに動く(まあ、まともなIDEを使ってるなら問題にはならないだろうけど。)
public void setName(String neme) {
this.name = name
}
- やや見にくい。そもそもthisを使うのは個人的にイヤ
以上の問題に対して、引数にprefixをつけるというやり方がある。
public void setName(String setName) {
name = setName
}こんな感じ。ちょっとダサイけど。
しかし、prefix以外にfinalを使うやり方があるようだ。
public void setName(final String name) {
this.name = name
}これだと、thisを付け忘れてもfinal変数に2回参照を割り当てることになり、コンパイルエラー。見た目もなかなかカッコイイ。やや冗長な気もするけど。
やっぱり誰が見ても直感的に分かるという点でprefix付けるのが一番いいのかとも思うけど、finalを使うのもなかなか興味深い。
ホントどうでもいいことだな。。。