- - PR -
Eclipseでgetter, setterメソッドの生成について
| 投稿者 | 投稿内容 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-11-06 09:02
いつもお世話になっております。
Eclipse(2.1.1)を使いはじめたばかりで、 お恥ずかしい内容の質問なのですが、 教えてください。 Javaのクラスでプロパティを記述し、Eclipseの機能でsetter, getterメソッドを 生成できると思いますが、その時に自動的に生成されるコードは次のようになります。
これを次のようなコードを生成するようにしたいのですが、 このような設定はできるのでしょうか。
パラメータの名前がstringというのが ちょっと違和感があります。 よろしくお願いいたします。 | ||||||||||||||||
|
投稿日時: 2003-11-06 11:21
swatです。
この現象は、Eclipseのバグであったはずです。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=35857 現在、私は2.1.2を使用していますが、まだ直っていないようです。 _________________ ****** swat ****** http://www.h7.dion.ne.jp/~s_wat/ http://d.hatena.ne.jp/swat/ | ||||||||||||||||
|
投稿日時: 2003-11-06 12:23
swatさん 返信ありがとうございます。
バグだったのですね。 知りませんでした。 私も丁度今2.1.2にバージョンアップしたのですが、 おっしゃる通り直っていないですね。 修正されるのを気長に待つことにします どうもありがとうございました。 | ||||||||||||||||
|
投稿日時: 2003-11-06 12:43
私は今の
の方がよいと思います。というのは、もし
を
こう書いてしまった場合(thisを書かない)、当然正しく動作しません。 過去に経験しましたが、このバグを発見するのは結構時間がかかりました。 Eclipseが自動で生成するのだから関係ないと思うかもしれませんが、 後で修正などを行っているときに、何かの手違いで修正ミスを する場合も考えられます。 #上記はある本(どの本かは忘れてしまいましたが、「Effective Java」や #「Javaの格言」系の本)に書いてありましたし、私自身もそう思います。 *追記 以前のバージョンのEclipseでは
が生成されていましたが、今のようになったのはバグで はなく、上記のような事があるので、あえてそうしたの だと思います。 [ メッセージ編集済み 編集者: javan 編集日時 2003-11-06 12:51 ] | ||||||||||||||||
|
投稿日時: 2003-11-06 12:58
代わりに、変数を選んで
「リファクタリング」→「フィールドのカプセル化」で行えば フィールド名と同じパラメタを持たせることができます。 フィールドが複数あると面倒ですが… javanさんの「パラメタ名とフィールド名は異なる方が良い」という指摘ですが、 私は賛成できません。おっしゃることはわからなくもないですが、 この場合Eclipseによって自動生成されるコードなのですから、 手動で修正することはない、つまり、 this.address = address; が address = address; に書き換わることはないと考えてよいのではないでしょうか。 また、フィールド名の変更をする時でもEclipseのリファクタリング機能に頼ればよく、 手動で変更するという危険を冒す必要はありません。 こういうことを言い出したら、 string = string; というバグがあった場合はどうするといかいう話にもなってくると思います。 | ||||||||||||||||
|
投稿日時: 2003-11-06 13:15
できました! Eclipseは使い始めたばかりで、 振り回されている状態ですが、 いろいろ試しながら習得していきたいと 思っています。 ありがとうございました。 | ||||||||||||||||
|
投稿日時: 2003-11-06 15:26
この場合、Javadocを生成すると引数が"string"という名前になってしまいます。 Setterのように引数が1個しかないものはそれでも構わないかも知れませんが、 同一型で複数個の引数を持つメソッドの場合は問題になると思います。また、 引数が1個だけの場合もJavadocを生成することを考えると仮引数に意味のある 名前を与える方が良いのではないかと思います。 あと、インスタンス変数やインスタンスメソッドの呼び出しにthisを明示的に 付加するようにコーディング規約を設定した方が、可読性を考えても良いと 思います。thisをつけないと、クラス変数(もしくはメソッド)とインスタンス 変数(もしくはメソッド)へのアクセスが同一の表記になってしまい、判別 できなくなります。 問題は、thisを付けずに書いてしまったコードをどのようにして機械的に見つけ だせるか、ですが、、、 # ただ、仰るようなバグは単体テストですぐに発覚しますよね?? | ||||||||||||||||
|
投稿日時: 2003-11-06 15:57
unibon です。こんにちわ。
コーディングスタイルで this を付けるか付けないかは、 両方の流儀があり、どちらも一長一短ありますので、 なかなかどちらかに決めるのは難しいと思います。 ただ、誤って、
と、書いても、昔はコンパイル時に警告が出なくて、 実行時にはじめて気づくケアレスミスでしたが、 最近は Eclipse だとコンパイル時にちゃんと警告として表示されます。 #JDK の javac だと依然として警告は出ませんが。 ちなみに setter で this を使うやりかただと、 どうしても this を使わないと書けないコード (内部クラスからその外側のクラスのインスタンスが持つフィールドを参照する場合など) との区別がつきにくくなる(というか this が随所に現れてしまうので希少性(?)が薄れる)ので、 そういう点から言えば this を使うやりかたの優位性がなくなってきていると感じます。 その一方で、setter で this を使わないやりかただと、 引数の名前に a などを付けるなどの細工が必要となるので、 これはこれで面倒なことは確かなのですが。 #あとで誤字を修正。 #そのあとで引用の箇所に追加。 [ メッセージ編集済み 編集者: unibon 編集日時 2003-11-06 16:00 ] [ メッセージ編集済み 編集者: unibon 編集日時 2003-11-06 16:59 ] | ||||||||||||||||
