論理的な設計と非論理的な人間
TDD勢に叩かれそうな言葉で、「複雑すぎてテストできない」といいたくなるケースあるんだけど、「テストを想定してないので振る舞いが多用すぎて現実的にすべての振る舞いを確認できない」という、いわゆる設計が失敗してるコード、どう向き合ったらいいんでしょうか(都内・26歳・男性)
— 俺は平気だよ (@mizchi) 2014, 5月 22
GUIアプリでテスト可能な設計するの、副作用が観測されないことが多いので、実質的に大量のバックドアを用意することになると思うんですよ。で、それってどうなのっていう。
— 俺は平気だよ (@mizchi) 2014, 5月 22
MVVMがテストしやすいの、値に振る舞いが従属するので、値を確認すればいい、という建前があるからだけど、テストのためにMVVMを採用するのは本質的ではないと思うし、とはいえ何かしらの設計を講じないとMとVが密結合した構造を取るので、プログラミングって難しいですね
— 俺は平気だよ (@mizchi) 2014, 5月 22
テストが良い設計を導くという言い分も理解できるけど、テストが導く設計は観測可能な副作用が生じる領域に誘導するという側面があり、それが良いUI/UXを導くかというと全く無関係だし、人間は非論理的なのでUI層にくる要求はだいたい論理的ではないので設計が破綻しやすい。
— 俺は平気だよ (@mizchi) 2014, 5月 22
だから人間を滅ぼさないと美しい設計のコードは書けないんですよ!
— 俺は平気だよ (@mizchi) 2014, 5月 22