memo.txt

教えていただいたこと、勉強したことのメモです。

Clean Codeを教えてもらった(1)

全4回予定の1回目。

進め方

  1. いくつか段落を読む
  2. 感想やわからなかったことを話す
  3. 教えてもらったりお話したりする(初めに戻る)

これを1時間繰り返す。

読んだところ

  • 第3章 関数の「動詞とキーワード」から章の終わりまで(P75~86)
  • 第6章 オブジェクトとデータ構造の初めから「データ/オブジェクトの非対称性」まで(P137~142)

※サンプルコードは本文の意味が分かる程度しか読んでません。

教えてもらったこと・気になったこと

動詞とキーワード

  • 引数が1つの場合、関数名と引数は洗練された動詞/名詞の組み合わせになる。
  • 引数が複数の場合、名前に引数を順番通りに表現することで引数の順番を覚えておかなければならない問題を軽減することができる。

副作用を避ける

出力引数
  • C#のrefやout。
  • Javaでは防ごうとしている。

戻りコードよりも例外を好む

try/catchブロックの分離・エラー処理も1つの処理
  • 「try/catchブロックはそれ自体が不恰好です。」
  • tryブロック・catchブロックの中身を関数として外に出す方がいい。
  • 関数は1つの処理のみを行うべき。エラー処理も1つの処理。

 →エラー処理を行う関数(try/catch)は他のことをすべきでない。

なぜ関数をこのように書くのでしょう?

  • 「最初から完璧なものが書けるわけではないのです。そんなことは、おそらく誰にもできないでしょう。」

結論(第3章)

  • プログラマはシステムを記述するためにドメイン特化言語を設計し、これを用いてシステムを構築します。関数は言語内での動詞で、クラスは名詞です。」
  • プログラマの大家は、システムをプログラムで書くものとしてではなく、話して聞かせるストーリーとしてとらえます。」

データ抽象化・データ/オブジェクトの非対称性

  • データと振る舞いを持つオブジェクト:エンティティオブジェクト
  • データだけを持ったオブジェクト:バリューオブジェクト