[戻る]

Java読書会BOF「セキュア・バイ・デザイン」を読む会 第4回

開催概要

日時

2022年10月15日 10:00 - 17:00

場所

川崎市教育文化会館 第3会議室

出席者(敬称略)

遠藤、今井、岩室、加藤、高橋(智)、高橋(徹)

  • 本日は、「セキュア・バイ・デザイン 安全なソフトウェア設計」のp.177、 5.1.3 ドメイン・プリミティブ・ライブラリの構築から読み始めます。

第2部 基礎編

第5章 ドメイン・プリミティブ(domain primitive)

5.1 ドメイン・プリミティブ(domain primitive)と不変条件(invariant)

5.1.3 ドメイン・プリミティブ・ライブラリの構築

5.2 Read-Onceオブジェクト(一度しか読み込めないオブジェクト)

  • p.181 java.io.Externalizableを実装し、writeExternalを実装して例外を吐くようにしているので、transientはつけなくても良いのでは?

    • 念の為にtransientを書いておこうという程度かも

  • p.182 【誤植】リスト5.3 validateメソッドの実装

    • 誤)return notBlank(value).trim()

    • 正)return notBlank(value.trim())

    • notBlankはおそらく apach commonsライブラリのValidateクラスのメソッド。引数がnullの時はNullPointerExceptionを、引数が空文字列の時はIllegalArgumentExceptionを吐く。

  • p.188 HTTPセッションにRead-Once設計したUserオブジェクトを格納した際、エラーメッセージ

5.3 ドメイン・プリミティブによってもたらされる安全性

  • p.190 リスト5.5 Orderクラスの実装

    • if(this.paid == false) とboolean値を==で比較しているが、これは if(!this.paid)でしょう

      • さらに、if (this.paid) return とした方がいい

  • p.195 リスト5.7 Orderクラスの実装(ドメイン・プリミティブ適用)

    • addToItemsメソッドの実装で、new OrderLineをしているのは何故だろう?

    • addItemsメソッドの中でaddToItemsを呼ぶときにnew OrderLineをして引数に渡すところが問題か?

  • p.197 ガーベッジ・コレクションの負荷は本当に関わらない?

    • 【宿題】最近のガーベッジ・コレクションの性能を調べてみよう。最近のGCは、G1GC、ZGC、Shenandoahなど。

第6章 状態の完全性(integrity)の保証

6.1 エンティティを使った状態の管理

  • p.207 状態をブラウザのCookieに格納するなら、Hiddenでもいいのでは

6.2 正しい状態で生成されるエンティティ

  • p.229 「オブジェクト指向の理論的な観点から見ると、内部クラスのコンセプトは少し使うことに躊躇するもの」

    • staticな内部クラスなら躊躇することはないのでは?

本日は、p.230 6.2.7 O/R(Object-Relational)マッパーのフレームワークと複雑な制約の前まで読みました。次回は、p.230 6.2.7項からです。

[戻る]