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

[ 戻る ]


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

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

.. csv-table:: 開催概要

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

議事
====

前書き
------

* 「甘草」の読み方は?
 * 「かんぞう」です。

* 「5S」
 * 会社でも使われている用語だけれど、机の上を綺麗にといったことで設計内容について使ったことはないです。

* 「コメント」
 * うちのプロジェクトではコメント禁止しています。
  * それって読めば分かるコードを書くということ? はい。
  * 必要なコメントもありますよね。無駄なコメントもたくさんありますが。

* 日本の製造業
 * とても褒めているけれど、日本のソフトウェア開発(IT産業)とはかけはなれていますよね。

序論
----

* 最初の挿絵、このメトリクス最強かも
 * うちのコードレビューは左側(よい方)だけど、コードを読めない人ばかりで沈黙しているだけです。
  * メトリクスムズカシイ

第1章 クリーンコード
--------------------

* 挿絵、パルテノン神殿の前で洗濯しているオジさん
 * 洗濯している布にはコードが書いてある、あ、コードをきれいにしている意図ですね。

* 「コードは終焉に近づいている」
 * プログラミングレスは、実際には表現形式が違うだけで結局プログラミングですね。
 * モデル駆動開発、最近聞かなくなりましたね。
 * 一時、"超高速開発"が話題になりましたね。
 * モデル、画面遷移図を書けばスキーマ生成とかやってくれるツールがあります。
 * 抽象化すると性能が劣化、たとえば正規化しすぎると遅くなります。
  * O/Rマッパーは、結局手でSQL書く余地を残しています。

* 「タイガーチーム」とは?
 * 米海軍特殊部隊が語源らしいです。

* 「ディルバート」
 * 意外と知らない人が多いようです。ここで日本語訳付きで見れます。
  * http://www.itmedia.co.jp/keywords/dilbert.html

* きれいなコードは伝搬しないのに汚ないコードが伝搬するのはなぜ?
 * より頭を使わない方に行こうとするからでは。

* 書籍「Working Effectively with Legacy Code」
 * 日本語翻訳本が出版されています。「レガシーコード改善ガイド」

* p.41 上1行目 誤植
 * 「これだけでは十分ではありあせん」→「これだけでは十分ではありません」

* カーネギーホールのジョークでは何を伝えたいの?

第2章 意味のある名前
--------------------

* 章題にある「by Tim Ottinger」とは?
 * この章を書いた著者と思われます。
 * 英語表紙では、著者は数人います。著者の1人にTimothy R. Ottingerがいます。
  * 日本語表紙ではRobert C. Martin一人ですが、、、

* コードで、「1」と「l」(数字の1と英小文字のl)の違いについて
 * Java Puzzlersでもありましたね。

* classが予約語なので変数名にklassを使う
 * clazz も使いますね。

* 「ローカル変数とか関数の引数にはaを」
 * スコープの違いを接頭辞で区別する方法ですが、昨今のIDEならスコープで色を変える機能があるので不要という意味ですね。
  * (書記補足)NetBeansだとメソッドの引数(パラメータ)の色がデフォルト黒なので設定でパラメータの色を変更するといいです。

* 「ノイズワード」、URLでよくurlStringという変数名を使ってしまいます。

* p.49のコード、フィールドの宣言行の末尾にセミコロンが2重に付いています。
 * コンパイルは通った! 空文がフィールド宣言でも許容されているようです。

* 複数形、不可算名詞の場合どうしたらいいのでしょうね。

* 名前を省略する文化根強いかも。母音を省略するとか。
 * UNIX文化に多いかも。strcpy (string copy)など。
 
* p.50 2つ目のソースコード片に誤植あります
 * realdays → realTaskDays

* アンダースコアを付けるフィールド名
 * getter/setterメソッド名にもアンダースコアが入るので気持がわるいです。
  * NetBeansだと、接頭辞のアンダースコアはgetter/setterメソッド生成時に削除してくれます。2つアンダースコアを付けると1つ残りますが。

* interfaceの実装クラス
 * XXImpleと命名すると、別な実装クラスを作るときに困ります。

* 二重ループは内側のループをメソッド化して一重ループにしてほしい

* JavaのCollectionクラスのiterator()メソッドはJavaBeans規約に従ってない
 * Collection APIのFAQに説明あり
  http://docs.oracle.com/javase/jp/7/technotes/guides/collections/designfaq.html#28

* p.53のコードはいったいどのプログラミング言語で書かれたのでしょうか?
 * 小文字のstringはC#風ですが
 * getName, setNameのメソッド命名はJava風
 * FromRealNumberのメソッド命名は大文字で始まっているのでC#風

* 海外プログラマーは、モンティ・パイソン好き多いですね。

* 「kill()の意味で、whack()を使うのは避けてください」
 * whack は俗語で殺すの意味があります。

* 「addをそれまでとは違った意味で使おうとする人がいるかもしれません」
 * クラスが違えばコンテクストが違うので、違う意味でaddをつかってもいいのでは?
 * Javaでも、コレクションの追加の意味のaddと、BigInteger等で算術加算の意味のaddが使われていますよね。

* 「問題領域の用語」
 * 日本語を名前に使うのがいいのでは? 英語で書くとプログラマーによって別な英語を使う。
  * それは用語集を作って一致させるべきでは? 日本語だから1つになる保証はないかと。
  * 用語集作らない(さぼる)プロジェクト多いかも。用語集がないと後で痛い目に会うけど、その場では痛くないですから。

* p.56 「コンパイラにも…(中略)…伝えることができる」
 * コンパイラに伝えるとはどういう意味だろう?

* p.58 注7 
 * 2つのクラス名があるのではなく、メールアドレスのためのクラスにGSDAccountAddressと名前を付けたという意味ですね。

* p.59 上5行目 誤植
 * 「Adress」→「Address」

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

次回
----

本日は、p67 中まで読みました。
次回は、p.67 コード通読:逓減規則 からです。

二次会
======

本日は、チネチッタ川崎に行きました。イタリア風な町並みを再現した区画です。
ハロウィン祭で街は賑やかでした。
最初ステーキ&ハンバーグの店に行こうとしましたが、混雑していたのでイタリアンレストランに入りました。


[ 戻る ]