「静的型付け関数型プログラミングだとOOよりもTDD(BDD)がしやすい(もしくはいらない)」?

勝手にまとめさせていただきました 誰でも編集可能にしていますので、誰でも追加、編集してくれて構いません 続きを読む
29
前へ 1 ・・ 3 4
山本和彦 @kazu_yamamoto

.@kyon_mm @tomooda ここから研究の話になりますが、最近Freeモナドというものがあって、データを定義して、それを実際のコードに翻訳するという手法があります。SMTPはコマンドの集合なので、たぶんハマるでしょう。

2014-04-18 10:02:04
山本和彦 @kazu_yamamoto

.@kyon_mm @tomooda SMTPのコマンドをデータで表現しておき、テストにはテスト用に翻訳して性質を見つけ出して純粋にテスト、実際のコードはIOへ翻訳という具合です。僕はまだ使いこなせていません。

2014-04-18 10:03:13
山本和彦 @kazu_yamamoto

.@kyon_mm @tomooda この文脈で、カリー化はまったく関係ないと思います。

2014-04-18 10:05:20
山本和彦 @kazu_yamamoto

.@kyon_mm @tomooda 時間が取れたら fsi を勉強してみますね。知らないので、今は何も言えません。

2014-04-18 10:05:55
Takashi Miyamoto @tmiya_

@kazu_yamamoto @kyon_mm @tomooda ScalaCheck (QuickCheck系) のドキュメントとか読むと、本物のRDBへのI/Oと、MockRDBへのI/Oと、振る舞い等価であることをテストすれば良いよね、みたいな話が。

2014-04-18 10:07:00
山本和彦 @kazu_yamamoto

.@tmiya_ @kyon_mm @tomooda その文脈での「振る舞いが等価」というのは、具体的にはどういうことで、どう表現するんですかね?

2014-04-18 10:12:51
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@kazu_yamamoto @tomooda はい。Cucumberなどを使ったものはもう少し意味が付加されて「長期間保守するドキュメントというのは多くはノンプログラマーなステークホルダーにわかりやすい実例がよい」という状況に適したものとしてのExampleがあります。

2014-04-18 10:18:45
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@kazu_yamamoto @tomooda QuickCheckの実例や使われ方について少し理解が進みました。ありがとうございます!自分で書いていてつらいとよく思うのですが、現状は多くの人にとっても難しいのですね。

2014-04-18 10:20:50
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@kazu_yamamoto @tomooda Freeモナドは少し前のTLで流行った?ときに少し読んだのですがわかっていませんでした。また勉強してみます。ありがとうございます!少しこの説明でイメージが前よりはつきやすくなってきました。

2014-04-18 10:22:17
Takashi Miyamoto @tmiya_

@kazu_yamamoto @kyon_mm @tomooda 例えばI/Oを伴うKeyValueStoreと、Mapでモデル化して実装したMockKVSについて、"set(k,v) を実行した後は、get(k)=Some(v)だ"、とかのKVSの公理をテストするみたいな感じ?

2014-04-18 10:23:49
きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

@kazu_yamamoto @tomooda fsiはシグネチャ定義をするファイルです。OCamlだとmliファイルのような。わかりにくい例ですいません。

2014-04-18 10:28:26
山本和彦 @kazu_yamamoto

.@tmiya_ @kyon_mm @tomooda ああ、それぐらいなら、できそうですね。

2014-04-18 10:33:43
山本和彦 @kazu_yamamoto

.@kyon_mm @tomooda 純粋関数に対して、性質を書いて QuickCheck で検証するのは、そんなに難しくないです。プログラマは、自分のプログラムの性質はぼんやりと分かっているので、あとはそれを表現する訓練を積むだけです。

2014-04-18 10:36:00
山本和彦 @kazu_yamamoto

.@kyon_mm @tomooda ああ。どうでもいいことですが、シグニチャファイルが分離されていると、テスト(あるいはドキュメンテーション)としては不利だが、共同開発には有利という印象があります。

2014-04-18 10:38:36
極端流形式仕様 初代𝕍𝕚𝕖𝕟𝕟𝕒𝕋𝕒𝕝𝕜𝕖𝕣 @tomooda

厳密には、Mockの事前条件がKVSの事前条件とおなじかより強いことを示す必要がありそうな。でないとKVSでエラーとなる操作がテストで通ってしまう。Mockが仕様でKVSが実装なリファインメント。 @tmiya_ @kazu_yamamoto @kyon_mm

2014-04-18 10:40:41
Kenji Yoshida @xuwei_k

@kyon_mm @tomooda @kazu_yamamoto (文脈よくわかってないですが) ScalazはScalacheckというQuickcheckのScala版でテストしてて、それで何度もバグ見つけたというのはあります。純粋なデータ構造や型クラスのテストには最適ですね

2014-04-18 10:55:26

期待しています!!!!

きょん@アジャイルコーチ、システムアーキテクト @kyon_mm

TLの皆様が優しくて勉強になりました。まとめると、私が関数型プログラミングBDDを確立しようと思いました / 「静的型付け関数型プログラミングだとOOよりもTDD(BDD)がしやすい(もしくはいらない)」? - Togetterまとめ http://t.co/xz6w0cUvgy

2014-04-18 12:18:27
前へ 1 ・・ 3 4