読書会(APIデザインの極意)第4回議事録

[ 戻る ]


=====================================================================================
Java読書会BOF 「APIデザインの極意 Java/NetBeansアーキテクト探究ノート」を読む会 第4回
=====================================================================================

.. csv-table:: 開催概要

   "日時", "2015年1月17日 10:00 - 17:00"
   "場所", "川崎市教育文化会館 第3会議室"
   "出席者(敬称略)", "井上、今井、遠藤、門脇、高橋(徹)、平山、松永、村山、山地、吉本(書記)"

議事
====

第8章 クライアント用とプロバイダ用のAPIを分離
----------------------------------------------

8.1 CとJavaでAPI/SPIを表現する
-------------------------------

8.2 APIの発展は、SPIの発展とは異なる
-------------------------------------

* 「呼び出すことを止める」とは、具体的にどういうことなのか?

  * クライアントから呼び出さなくなるだけか?

8.3 Java1.4と1.5の間でのWriterの発展
-------------------------------------

* P144のコードのように、オーバーライドされている、されていない、ということを判断するのは、コンストラクタでもいいのか?

  * 毎回することになるが、問題ないと思われる。

  * Javaでは、コンストラクタで自分自身のメソッドは呼べるのか?

    * 呼べるが注意が必要。

    * オーバーライドされたクラスが呼び出されるので、親クラスのコンストラクタが完了していない段階で呼び出される可能性があるため。

  * バイナリ互換性を求めると、オーバーライドされている、されていないことを判断するしかないのか。

  * こうしてソースが汚くなっていく。

  * 最初にfinalにしておけばよかったのか。

* P144のコードの"VMS"と"WNT"のネタは、「闘うプログラマー」を読んでいないと分からない?

  * "VMS"を1文字ずつずらすと、"WNT"になる。

* インスタンスがあるかどうかを判断する方が、オブジェクトからメソッドを取得するより速い?

  * どうだろう?

  * でもソースは汚くなる。

* P148のコードで、最初に"!= null"をきくのはどうなんだろう?

  * どちらが正常の状態かで違う。

  * 二重否定になっているわけでもないので、仕方が無いのでは。

8.4 適切にAPIを分離する
------------------------

第9章 テストの容易性に留意する
-------------------------------

* XPは宗教。

* XPでは、かなりテストに洗脳された。

  * でも日本では広まっていない。

9.1 APIとテスト
----------------

9.1 APIとテスト
----------------

9.2 仕様が姿を消す
-------------------

* 例としてPerl、Ruby、PHPが挙がっているということは、これらの言語は仕様が無く実装のみということか?

  * そうだと思う。

  * バージョンが変わるたびに、仕様が変わることがあるし。

* Rubyが規格化されたらしいが・・・。

  * JISとISOには入っている。

  * でも規格を元にして実装されているわけでもないので、無意味。

9.3 優れたツールは、APIを易しくする
------------------------------------

9.4 テスト互換性キット
-----------------------

第10章 他のAPIとの協調
-----------------------

10.1 第三者のAPIの利用に注意する
---------------------------------

* javax.sql.RowSetはインターフェースなのか?

  * 実装はDBベンダーが行うのでインターフェース。

  * Javaでは、互換性のためにインターフェースへのメソッド追加はしないはず。

  * Javaとしての互換性を捨てて、DBベンダーが頑張って複数のバージョンを出して対処している。

  * 割り切って使っている。

10.2 第三者のAPIの利用に注意する
---------------------------------

* JTextComponentの全ての階層のメソッドを使えば、本当に何でも出来る。

10.3 APIの整合性を強制する
---------------------------

* P178のコードで、doLookupメソッドは誰が実装する想定なのか?

  * コンストラクタがパッケージプライベートなので、このパッケージを実装している同じチームの人間では?

  * コンストラクタをpublicにして、メソッドをfinalにする方がいいのでは?

  * finalのlookupプロバイダのようなものを提供する方がいいのでは?

* モジュール方式とは、Project Jigsawで言っているモジュールと同じものか?

  * P105で書かれている設計方式のこと。

10.4 委譲とコンポジション
--------------------------

* 3引数のassertEqualsの第1引数は?

  * エラー時に表示するメッセージ。

10.5 APIの誤用を防止する
-------------------------

* P191のactivateメソッドはどこにあるのか?

  * 前ページで、getActiveとsetActiveに型を渡していることでジェネリックを導入することになったので、引数無しのactivateメソッドを追加するべきだったということ。


.. note:: 次回は、p.192「10.6 JavaBeansのリスナーパターンを使いすぎない」から。


[ 戻る ]