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

[ 戻る ]


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

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

.. csv-table:: 開催概要

  "日時","2014年1月18日 10:00 - 17:00"
  "場所","川崎市教育文化会館 第3会議室"
  "出席者(敬称略)","高橋(徹)、高橋(智)、松永、石黒、田辺、吉本、山田、遠藤、門脇、井上、根本、村山、中島、小棚木(書記)"

議事
====

第8章 境界
------------

* リスト8-1のテストコードにはassert文がないが?
   => 期待値との比較は期待していない。動作を確認するのが目的。
* Eclipseはクラス単位だが、mavenはClass#Methodでテストを実行できる。
   => Eclipseでも、メソッドを選択してテストを実行できる。

* Groovyコンソールはコードを実験するときに役立つ
* 最近のデバッガはすごい。引数の式にカーソルを当てると結果が表示される。裏で実行しているらしい。
   副作用がある場合はどうなんだろうか?

* p170の最後の段落の「薄層」とは?
   This design also gives us a very convenient seam in the code for testing.
   原著ではseamとなっている。seamの訳は継ぎ目。誤訳か?

   [厚い地層に挟まれた石炭の薄層という訳もあります。]

* interfaceを他の人が実装するのを禁止したい。
   interfaceをAPIとして公開していたが、勝手にそのinterfaceを実装したコードが書かれていた。

   mavenにpublicだけど公開したくないクラスを使わせないようにするプラグインがある。 http://kohsuke.org/access-modifier/

第9章 単体テスト
----------------

* 単体テスト?ユニットテスト?
   Unitの訳は単体。

* 組込系は小さい単位を単体テストとしている。業務系はもっと大きい単位か1ユースケースの単位を単体テストと言っている。人によって定義がバラバラ。
   会話するときは、用語の定義を確認してから話をした方がよい。

   同様にモジュールも人によって意味がバラバラ。

* 単体テストとユニットテストを意図的に区別することもある。
* 日本のSIerはテストコードを書く工数は貰えない。
* リスト9-3のメソッド名は間違い。原著が間違っている。
   [誤] turnOnLoTempAlarmAtThreashold() [正] turnOnLoTempAlarmAtThreshold()

* 二重規範は double standard?
   原著では a dual standard

* 見解の道場(p183)
   There is a school of thought

* リスト9-7はなんで2つのテストに分けた?
   出力がXMLであることの確認と、内容そのものの確認を別テストとして分けた。

* RSpecではリスト9-7のようなやり方(対象-条件-想定結果 規約)をしている。
* "Keep to the code"は誰の言葉?
   Jack Sparrowの言葉
      "Keep to the Code." "規則を守れ"

      "Aye, the Code." "はい、規則を守ります。"

* assertの数を減らす?
   テストを分割して確認内容を少なくするということ。

* リスト9-8のメソッドコメントのメソッド名が違う。翻訳時の間違い。
   [誤] addMethods() [正] addMonths()

* 1ヶ月後とは具体的にいつのことなのかは決まっているのか?
   2/28の1ヶ月後は3/28? 3/31?

* 誕生日については法律(年齢計算ニ関スル法律; 施行 明治35年)で決まっている。
   誕生日の前日(誕生日前日の24:00)に年をとる。そのため4/1生まれの人は3/31中に年を取るので前の学年になる。

   浮動小数の +0 と -0 みたい。

* Java8のDate & Time API は日付計算もよくなっている。

第10章 クラス
-------------
* 1クラスで作っても、複数クラスに分割しても貰えるお金は変わらない。リファクタリングは保守チームに押し付ける。
   さすがにそれは・・・

* 炎上した方が「よくやった」と評価される。
* 高解像度のディスプレイを購入したのは、スパゲッティコードを読むためか?
   マルチディスプレイにしても、1000行を超えるメソッドは無理。

* スパゲッティコードを書く人は助けてもらえるからいいが、助けに入った人は大変である。
   印度行ってきます。

* リスト10-5 エラトステネスのふるいのアルゴリズム
* クラス分割することのトレードオフは?
   説明用の例なので・・・。現実の場合でも10000行を超えるクラスだったら、トレードオフは考えない。

* リスト10-6〜8 はリスト10-5の凝集度を上げる例である。
* この例はクラス分割しても、クラスのコードが長いので、分かりやすくはなっていない。
* PHPだとHTMLとロジックが混在して分かりづらい。
* リスト10-8は protected staticになっているはなぜ?スレッドセーフじゃなくなる。

第11章 システム
---------------
* この絵のボトルシティはスーパーマンに出てくる。"kandor"で検索。
* AOPにバグがあり、回避策が見つからず苦労したことがある。
* p225の「権限を移譲する」は「権限を委譲する」では?

第12章 創発
-----------
* 創発? 原著では Emergence
* p231のreturn文の式の左辺が0になっている。普通は右辺では?
   C言語のif文の代入バグを避けるための手法と同じ
      if(x == 0) ==> if(x = 0)

* accure -> (法律的に)権利が発生する。

次回
----
p.237「13章 同時並行性」から

その他
------
* 今年は読書会としてはデブサミには参加しません。
* 3〜4月頃にイベントを考えています。
* 手羽先がいまいちだったので、次回こそは世界の山ちゃんに行きましょう。


[ 戻る ]