Effective java 3版 読書会 18日目

実施日時:2019/6/6 22:10~23:10
対象範囲:項目74~項目78
参加者:yodai、yoridori、kassyi
形式:オンライン(discord)
   課題本を事前に読み、実業務と照らし合わせて記述内容の
   議論をする。

項目74 各メソッドがスローするすべての例外を文書化する
例外について、なんでもかんでも文章を作ってはいけない
どんな例外がチェックされる例外で、チェックされない例外かを文書化する
チェック例外の中で対処してあげれば問題無い
チェックされない例外はthrows予約語を書いてはいけない

項目75 詳細メッセージにエラー記録情報を含める
toStringでエラーを分かり易く表現するのが良い
そうすると、エラーの解析がし易くなる
P307の例の様に、どこで発生したかの情報を記録すると良い
詳細メッセージにパスワードや暗号かぎを含めてはならない
個人情報も出すべきでない

項目76 エラーアトミック性に努める
メソッドで例外が発生した場合、そのオブジェクトをメソッド呼び出しの前の状態に戻しておく
実際には実務ではやったことなく、早期リターンを考えていれば機会がない
引数のリストに値を格納した場合、中途半端に値が入って終了すると、呼出元のリストを壊す可能性がある

項目77 例外を無視しない
グーグルのコーディング規約では、無視する場合でも明確な理由をコメントで記述すること
FileInputStreamのクローズ処理は無視も適切かも知れない
エラーの対処としては、エラーメッセージを画面に表示させてログを出力させること位しかない。
通信と違い、下手にリトライとかは出来ない

項目78 共有された可変データへのアクセスを同期する
volatileは最後に書き込まれた値を保証する
元の値を読み書きする場合は、volatileでは不完全なのでsynchronized修飾子を使用する。
可変データの共有を省く事は、問題を起こさないプログラムを書くことに繋がる

協力:Tech Baton
https://tech-baton.studio.design/

この記事が気に入ったらサポートをしてみませんか?