- - PR -
変更しない変数にfinalを付けるべきですか?
投票結果総投票数:69 | |||
---|---|---|---|
必須 | 2票 | 2.90% | |
望ましい | 25票 | 36.23% | |
場合による | 7票 | 10.14% | |
どっちでもいい | 1票 | 1.45% | |
付けなくていい | 28票 | 40.58% | |
付けないほうがいい | 4票 | 5.80% | |
付けるな | 0票 | 0.00% | |
絶対に付け | 2票 | 2.90% | |
|
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-05 17:47
思うに、つぎのような感じのことができればいいのかなあ、と思います。
(この例では引数の Fuwa クラスに対し、setPunyuFlg メソッド(その引数は boolean のバージョン)が呼ばれないことが保証される。) immutable な使われかたを希望するならば、prohibit する setter メソッドを複数書いてもいいし、あるいはメソッドごとに setter であることが分かるフラグ(アノテーション)を付けておけば、setter というグループ指定ひとつだけでも良い、などみたいな感じで。 こんなことがどんどんできれば、引数の型情報を見るだけで、どんな使われかたがされるのかが分かって便利かもしれません。 たとえば... (1) 特定のメソッドを呼ぶことを禁止できる。上記のコードのような感じです。委譲がどの範囲までなされるのかが分かる。たとえば引数で渡されたクラスの close メソッドが呼ばれるのか呼ばれないのかが分かるなど。 (2) 引数で渡したインスタンスをフィールドに保持することを禁止できる。引数に渡したインスタンスが渡し先で集約されるのかされないのかが分かる。 たとえて言えば、java.policy ファイルが、メソッドごとにあるような感じとも言えましょうか。 デメリットは、引数が長い。メソッドの中の実装を見たほうが速いじゃん、と言われかねない。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||||||
|
投稿日時: 2007-04-05 17:55
unibonさん、いつもありがとうございます。
いやいや、インスタンス単位でやりたいんです。
このコードをレビューして、 「あ、fuwaは変更されないから安心だね」 と言って、職印押して、花見にでも出かける。。。そういう生活がしたいんです! ん? | ||||||||||||
|
投稿日時: 2007-04-05 18:14
単体テストのコードを細かく書いたり、そもそも無駄に副作用を気にする 必要のある設計にならないように、設計をレビューした方がいいのでは? | ||||||||||||
|
投稿日時: 2007-04-05 19:25
設計の間違いを他でカバーしようとする、
典型的なバッドノウハウ集になっていますね |