[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 12271] ズームイン Java 用レジュメ
高橋(徹)です。
ズームインJavaの持ち時間は1時間弱ですので、レジュメを作成しました。
補足・その他ありましたら指摘下さい。
1章を終わらせて楽しい2章(final)に入れるといいですね。
ーーー Java魂#2用レジュメ ーーー
1.2.4.3 ラベル
break文、continue文で使用する。 <この節、コード及び説明に大量のエラッタ有り>
continue文のラベルは、for, while, do文に付いたもののみ有効
「ラベルは原則的には使用しないことを推奨」
1.2.5 assert
2つの形式あり。
assert(args.length > 0);
assert(args.length > 0) : "引数の数が0です。";
アサーションか例外か?
チェックコードの処理がオーバーヘッドに。アサーションなら無効にできる(性能向上)
1.2.5.2 アサーションを使う基準を提示
ほぼSunの提唱する内容といっしょ
※検査例外は業界では異論が多い
IBM developerWorksの記事「Javaの理論と実践:例外をめぐる議論」
Bluce Eckelの記事 "Does Java need Checked Exception ?"
1.2.5.3 開発・テスト時はアサーションを有効にする。運用時は初期は有効に、エラーが取れてきたら無効に
1.2.6 コンストラクタの連結
パラメータのバリエーションが複数あるコンストラクタで、コードの冗長記述を防ぐイディオムを紹介
コンストラクタの中でthis()を使って処理を一元化
thisは最初の行でのみ使用可、複雑な引数の設定はヘルパメソッドを使うとよい
1.2.7 初期化
インスタンス・フィールドの宣言行での初期化
※p.29の例は初めて見た!
クラス・フィールドの初期化
初期化子の処理は記述順番に行う・・・「不正な順方向参照」バグ
1.3 アクセス関連の問題
1.3.1 属性はprivate、公開メソッドはpublic、ヘルパメソッドはprotectedにする。派生して再利用を可能にするため
1.3.2 フレンドインスタンス(同じクラスの異なるインスタンス)は、無制限でアクセスできてしまう
フレンドインスタンスのフィールドは、設定メソッドを介して変更する
自分自身のフィールドも、設定メソッドを介して変更すべし
1.4 よくある間違い
1.4.1 常にコンソール(System.out)があるとは限らない
printStackTrace()だけでなく、例外を再スローし、例外連鎖を使おう
ロギングを使うとよい
1.4.2 System.exitは危険、使うな。どうしても使うならmainメソッドの中に限定。
1.4.3 if文、switch文、デフォルト実行は止めて、条件分岐にきちんと条件を示す。最後のelse、default句では、エラー(assert)を発行する