読書会(Effective Javaプログラミング言語ガイド)第3回議事録
[ 戻る ]
Effective Java読書会 3回目
2002年 7月27日@田町図書館
村上 中村 布留川 武川 鈴木 鈴木 内脇 村山 金井 高橋 高橋 山本 天
野 根本(記)
P69 「継承よりコンポジションを選ぶ」 より再開
◆異なる戻り値を持つ、同一名のメソッドは再定義できない。
うかつに名前が重なってもいいように privateのコンストラクターにすれば、この
問題を回避できる。
何もしないと super.init()を呼ぶのでコンストラクターが異常動作をすることにな
る。
例: AddAll()は内部的にAdd()のコンストラクターを呼び出すのでコンストラク
ターが
複数回起動されることになる。
コンストラクター問題の回避方法としては
Add(){処理メソッド} --> Add(){} + AddPrivate(){処理メソッド}
として AddPrivateはprivateにして隠しておく。
◆ ツールに関する雑談
java2htmlはハイパーリンクたどれる。
junitはマルチスレッドテスト非対応。
http://www.junit.org/news/extension/index.htm#MtJUnit
にマルチスレッド対応フレームワークあり。(高橋さん調べ)
javadocでは何をするのかを書くのであってどうやって実現するかは書いてはい
けない。
JLSかなにかで書いてある。--> どこに?
日揮情報のdescribleにコードを入力するとクラス図がでてくるが
composition(同一寿命)
とaggregation(集約 インスタンス寿命に関連性なし)は区別されない。
◆ Serializableのメソッドのオーバーライドは複製元クラスをも壊すことがある
浅いコピーのcloneは参照先クラスを勝手に書き換えるかもしれない。
もともとはOKのはずだった。
p45では元のインスタンスの普遍式を破壊します。
◆項目16
ゴスリングは interfaceをなくしたかったが、なぜかは不明。
多重継承に代わってmixinがrubyでつかえるのか。
C#もインターフェイスを持っている
◆項目17
property fileで情報を外だしにすべきではないのか、それなら動的に変更も可能。
型名.thisでエンクローズしたクラスを見る。
◆ 項目18
qualified.this について?
◆第5章
c#はstructをheapではなくstackに持つ
◆ 項目19
ひとりでつかうならfield
みんなが使うならget/set
描画のDimensionのsetはnewしてからでないと呼べないので重い
◆項目20
通信プログラム
javaccみたいなものがほしい
◆項目21
enum type はC#は持っている
typesafe enumなら 4種類の値以外は代入不可能になり、事前チェックされる。
これなら安全性が確保される。
newしているのはstaticなので特に問題にはならない。
suit.clubs=CLUB
if (CLUB==CLUB) での比較 内部実装に依存せずに比較できる。
ハードコードされた文字列は
文字列そのものは評価しなくなるので、enumを国際化できる。
通常のenumは文字列を見るので、国際化できない。
「不思議と管理されている」名前空間とは?? 意味不明
結局 enumではなくて名前解決でいく(つまりtype safe enum)
◆項目22
◆項目23
assertをpublicの引数検査に使っていいのか?
try catchではassertを捕まえられないので、いきなり停止するので使うべきでは
ない。
JavaWORLDのdesign by contractの事前条件 事後条件の話しで、組み込む
(今回は、ディスカッションが少なかったです。)
以上
[ 戻る ]