読書会(Clean Code アジャイルソフトウェア達人の技)第2回議事録

[ 戻る ]


.. -*- coding:utf-8 -*-

============================================
 Java読書会BOF「Clean Code」を読む会 第2回
============================================

.. csv-table:: 開催概要

  "日時","2013年11月16日 10:00 - 17:00"
  "場所","川崎市教育文化会館 第3会議室"
  "出席者(敬称略)","高橋(徹)、高橋(智)、岩室、遠藤、小棚木、門脇、山田、村山、吉本、田辺(書記)"

議事
====

第3章 関数
----------

* 上から下へ実行される順に書く。
 * public -> private の順に並んでいるように見える。
 * ユーティリティを上の方に書くなど。
 * インタプリタ言語などは定義を先に書かないといけないので順番順にならざるを得ない。
 * 初期化処理などは上の方に書いてある方がわかりやすい。
 * 相互呼び出ししている場合は順番に迷いそう。

* http://en.wikipedia.org/wiki/Open/closed_principle のリソースは Open/closed_principle

* static に書いていくとその場では局所化されてわかりやすいかもしれないが、それが繰り返されると破滅的なコードになる。
 * findbugs や checkstyle をなどを先生にして、少しずつ矯正していく?

* 予想を上回るの意味は? クリーンコードの中で、というくらいだから良い意味?

* 引数の数を抑えても、インスタンスフィールドに過度に状態を持たせてしまうなど、別の問題が出るのでは。

* true/false 用の関数をわけても、呼び出し元が if/else の関数呼び出しをするので、良し悪しでは。

* SLF4J は Log4j と違い、メッセージ内容をパースする前にログレベルを評価する。
 * Log4j のパフォーマンス向上のために isDebugEnabled などを利用したりする。

* 引数の順番は大事?
 * 英語として意味のある順番だとわかりやすい。
 * 言語によってはデフォルト引数もあるので、その場合はもちろん大事。

* 引数2つの関数と、関数2つはどっちが頭に入りやすい? 4つではどう?

* Java 8 の Calendar Builder
 * http://marxsoftware.blogspot.jp/2013/05/jdk-8-calendar-builder.html

* 形容詞として set を使いたいのであれば、isSet とかにしそう。 
* 幸せの小道=ハッピーパス(正常系)と思われる。
* 例外チェックもベースクラスで全て引き取るとエラー処理が難しくなる。
 * try 句の長さに比例してエラーハンドリングが難しくなる。
 * エラー処理とと通常の処理をわけると、エラー処理側のシグネチャが長くなって、結局インラインで書いたほうがわかりやすいこともあるかもしれない。

* PMD にコード重複をチェックする機能がある。
 * Copy Paste Detector(CPD)
 * http://pmd.sourceforge.net/pmd-5.0.5/cpd.html

* リファクタリング後の SetupTeardownIncluder.java はわかりやすいか。
 * 1つ1つはシンプルになっているが、機能を把握できない。

第4章 コメント
--------------

* ライセンスの表記の是非。
 * バイナリにも必要なのでは。

* MdM とは? Web 検索してもそれらしいものは出てこないので、何らかの PJ(例えば FitNesse) 固有のもの?
* public な API にはドキュメントとして書くべきだと思うが、単順なゲッタ・セッタも書く?
 * get でいろいろ処理をしている場合は?
* 今でも $Id$ などは付加している。

* コメントアウトを削除するのはどうしても勇気がいる。引継直後など、処理の内容がわからないのであればなおさら。
 * 大量のコメントアウトがあった場合、正しく削除できたかも不安になる。

* リファクタリングされた PrimeGenerator は非スレッドセーフ


誤記
----

* P69
 * 脚注 8 の a と b が逆
* P70
 * SalariedEmploye -> SalariedEmployee
* P100
 * 2001/20/11 -> 2001/10/11
* P111
 * 入力が正しくないときは null を返す -> 入力が正しくないときは null 配列を返す

次回
----

本日は第4章を読み終わりました。
次回は P115 第5章 からです。


[ 戻る ]