[ 戻る ]

Java読書会BOF「Javaコードアンチパターン」を読む会 第8回

開催概要

日時

2026年9月26日(土) 10:00-17:00

場所

教育文化会館 第3会議室

出席者(敬称略)

高橋(智)、吉本、遠藤、井上、岩室、高橋(徹)(記)

本日は、p. 290 9.7 No.88:enum、アノテーション、クラスに対してgetClass()を使う から読み始めました。

第9章 その他のライブラリメソッド

9.7 No.88:enum、アノテーション、クラスに対してgetClass()を使う

9.8 No.89 文字列からブーリアンへの誤った変換

  • p.292 Boolean.getBoolean(String key) でシステムプロパティを取得できるとは知らなかった・・・

9.9 No.90:日付けフォーマットにおける誤った書式指定子

  • p.293 「大文字のYは週番号付きの年(week-numbering year」とあるが、2026-週番号 という意味ではない

    • 例にある2021年は、1月4日が月曜日で、大文字Yを指定すると1月1日から3日までは、2020となる

    • Y 1文字では 2021, Y 2文字では 21(西暦末尾2桁)、Y 3文字、4文字では 2021, Y 5文字では 02021 となった

9.10 No.91:弱い参照やソフトな参照の意図しない失効

  • 【宿題】ソフト参照でGCが走って、WeakReferenceのgetメソッドがnullを返すコード・手順を確立する

  • 【宿題】Reference.reachabilityFence(obj) がコードの後ろに置かれているにもかかわらず機能するのはJavaコンパイラが何か特殊なコードを生成しているのか調べてみよう

9.11 No.92:世界が安定していると仮定する

  • p.298 BasicFileAttributesとあるが、ならば具体的なファイルシステム属性があるのか?

    • DosFileAttributesとPosixFileAttributesがある

  • 【宿題】NTFSやMacで DosFileAttributesを使うとどうなるのか?

9.12 No.93:平行に更新されるデータ構造へのアトミックではないアクセス

第10章 単体テスト

10.1 No.94:assert文における副作用

10.2 No.95:不正な形式のアサーションメソッド呼び出し

10.3 No.96:不正な形式の例外テスト

10.4 No.97:テストメソッドからの早すぎる終了

10.5 No.98:単体テストでAssertionErrorを無視する

10.6 No.99:等値性の契約の検査にassertNotEquals()を使う

10.7 No.100:不正な形式のテストメソッド

付録A 静的解析用アノテーション

A.1 アノテーションパッケージ

  • 「Maven座標」とあるがこれは何を指すのか?

    • Mavenではライブラリは、groupId、artifactId、verionの3つの要素(GAV)で構成される「座標(coordinates)」によって一意に識別される。

  • 結局どれを使うのが良いのでしょう?

    • 採用する静的解析ツール次第か・・・

A.2 アノテーションの種類

  • 結局、スタンダードな静的解析用アノテーションはないですね

付録B 静的解析ツールの拡張

B.1 Error Proneプラグイン

  • 自分で作るには厳しい・・・

B.2 SpotBugsプラグイン

  • 【誤植】p.330 下側のコードブロック1行目 「Public」→「public」(先頭が大文字になっている)

B.3 IntelliJ IDEAプラグイン

訳者あとがき

次回

本書籍は今回で読了しました。次回は新しい課題図書となります。