Java読書会BOF 「Effective Java 第3版」を読む会 第5回

[ 戻る ]


==========================================================================================
Java読書会BOF 「Effective Java 第3版」を読む会 第5回
==========================================================================================

   "日時","2019年4月13日 10:00 - 17:00"
   "場所","川崎市教育文化会館 第3会議室"
   "出席者(敬称略)","高橋(徹)、高橋(智)、岩室、今井、井上、小棚木、長谷川、平山、上村、大部(書記)"

**第8章 メソッド**
======================================================================

**項目50 必要な場合、防御的にコピーする**
----------------------------------------------

- P.235 どんなJavadocを書くべきか、Javadoc付きのコードサンプルを白紙スペースに書いて欲しかった。
    - 他に防御的コピーを行っているサンプルがあるのか探してみる。(宿題!!)

**項目51 メソッドのシグニチャを注意深く設計する**
----------------------------------------------

- P.237 LinkedHashMapの場合は順序があるため代わりにMapを使うと都合が悪いこともある。

**項目52 オーバーロードを注意して使う**
----------------------------------------------

- P.242 後者はコンパイルされません => コンパイルエラーになる、の意味。

**項目53 可変長引数を注意して使う**
----------------------------------------------

- P.245 「不格好ことです」は「不格好なことです」の誤植。

**項目54 nullではなく、空コレクションか空配列を返す**
----------------------------------------------

- P.247 原文では「is」が斜体になっている。(It is possible...)だということです、に込められている?
- P.248 [Shipilev16] => P.373では[Shipilev]となっており16がない。誤植。
    - [Shipilev16]のブログを読んで、次回だれか解説。(宿題!!)
    - http://shipilev.net/blog/2016/arrays-wisdom-ancients/

**項目55 オプショナルを注意して返す**
----------------------------------------------

- P.253 インスタンスフィールドにOptionalを持たせない。
    - 標準ライブラリでOptionalを返すものは?
    - 戻り値にOptionalを使用しているAPIを探す。(宿題!!)

**項目56 すべての公開API要素に対してドキュメントコメントを書く**
----------------------------------------------

- P.254 [Javadocguide]は[Javadoc-guide]。誤植。
- P.256 {@code ... == 0}.のように、{}で囲む。誤植。
    - Java 10,11,12で動くか確認する。-tag "implSpec ..."(宿題!!)
- P.257 {@literal Mrs. Peacock}.で囲むところ。
    - 訳本と原文でサンプルコードが全く異なる。
    - 原文が後で変わった可能性あり。

**第9章 プログラミング一般**
======================================================================

**項目57 ローカル変数のスコープを最小限にする**
----------------------------------------------

**項目58 従来のforループよりもfor-eachループを選ぶ**
----------------------------------------------

- P.264 for-eachのコード中の「:」は英語で「in」と読む。

**項目59 ライブラリを知り、ライブラリを使う**
----------------------------------------------

- P.264 Java 7では、RandomよりThreadLocalRandomを使う。
    - 使うべきライブラリをどうやって探すのか。
    - ググる。あると思って探す、リストアップしてるだけのGitHubなどある。

**項目60 正確な答えが必要ならば、floatとdoubleを避ける**
----------------------------------------------

**項目61 ボクシングされた基本データ型よりも基本データ型を選ぶ**
----------------------------------------------

- P.274 ラムダだと気づかない?

**項目62 他の型が適切な場所では、文字列を避ける**
----------------------------------------------

**項目63 文字列結合のパフォーマンスに用心する**
----------------------------------------------

- P.279 +演算子でStringを繋ぐと、コンパイルでStringBuilderのappendになる。
    - ループ内で、StringBuilder -> Stringを毎回行うところがパフォーマンス悪化につながる。
    - 「一つずつ文字列を処理してください。」とは、具体的にどのような意味なのか。
    - 結合行わずに、表示などの処理をループ内で毎回行う、結合しないで処理を行うということか。

**項目64 インタフェースでオブジェクトを参照する**
----------------------------------------------

- P.280 LinkedHashSetは順番があるので、LinkedHashSetのままのほうがいいのでは。
    - 今ならVarで書くべきか。
    - メソッドの戻り値のときはインターフェースにしておいて、それ以外のローカル変数ならVarでいいか。
    - この本のバージョンではまだVarは無かった。
    - PrimitiveをVarに入れてもボクシングが起こらないことについて確認する(宿題!!)

**項目65 リフレクションよりもインタフェースを選ぶ**
----------------------------------------------

.. note:: 次回は p.285 から。

(以上)


[ 戻る ]