デザインレシピという考え方

現在こちらの本を勉強中のcacaponです。

その中で【デザインレシピ】という考え方が出てきたので共有します😃

デザインレシピとは?

本によると以下のように書かれています。

デザインレシピというのは、プログラムを作る、デザインするにはどうすればよいのかを示すレシピです。

プログラムを作るにあたって指針になるようなものらしいです。

デザインレシピには6つの項目がありそれぞれ考える必要がありそうです。

データ定義

  • 入力データの型は何か?
  • 出力データの型は何か?
  • 構造を持つなら定義する。

目的

作成する関数が何をするものか考えます。*1

  • 何を受け取るのか?
  • 何を返すのか?
  • 型は何か?

考えた内容はコメントで残して、後で目的が分かるようにしましょう。

入力例、出力例を作る。

例えば f(x) = x * 2 のような関数の例なら

  • In[2] Out[4]
  • In[10] Out[20]
  • In[0] Out[0]

のように考えることができるでしょう。

ココで出した例が、テスト項目になります。

テンプレート

入力が構造を持つデータや再帰的なデータの場合は、その構造に応じたmatch文を作成するんだそう。

※ここに関してはもう少し調べます。

本体

目的考えた働きをどうやって実現していくか考えていきます。

テスト

例を元にテストを実行します。

テストが通らなかった場合は、構造上間違いがあるので、原因を究明します。

ただ、テストが通った = 完全ではないので注意。

例から漏れている項目があると考えるべき。


これを意識しながら行えば、質の良いプログラムを作りやすくなりそうですね。

まだ、知見が足りてない部分もありますので、引き続き勉強を続けたいと思います。

それではまた😃

*1:書籍が関数型言語の話のため関数となっていましたが、恐らくクラスでも同じように考えるべきでしょう。