プログラミングは「違和感」を除去する作業なんだそうな2010/05/07今日ちょっとベテランさんと話していて,へぇと思ったんだけれども,彼にとってプログラミングってのは,「違和感」を除去する作業なんだそうな。ゆことかというとですね。次のようなコードがあったとしますよね。オプションをつけても警告がまったく出ないんですけれど,ベテランさんは「違和感」とコメントしたところに違和感があるらしい。関数に戻りがないことや,初期化されずに宣言/定義されているローカル変数なんかには違和感を感じます。不定な要素をなるべく残しておきたくない,ということから。場合,関数の戻り(返値)を気にするようになります。場合,これはあくまでも「副作用」という扱いになっていたりします。関数の集合体」とかいった言葉はどこかで聞いたことがあるかと思うんですけれど,戻りのある関数である以上,できる限りその値を気にするようになるのがいいんだとか。戻りを気にする人は,あまりいないと思うんですけどね。手馴れはそゆとこまで気を配る,と。返ることになっている。上で動かす限り)まずないわけですけれど,「この関数は失敗する可能性がある関数だ」ということを踏まえているか否かの違いは,たしかに大きいものがあるんじゃないかと思います。失敗する可能性がある関数を呼んでいるのに,その結果を見ないのには,違和感がある......とか云々。しろ」とかいった話はよく聞くわけですけれど,結局のところ自分が作る関数も含めて,プログラムの制御をできる限り自分の制御の下においておくことが「安心」だったりするわけですね。そんなことも踏まえて,プログラミングというのは,安定している状態を少し崩して,また立て直して......を繰り返してできるんだとか。すべき(制御すべき)要素が増えて)少し安心に「不安」がやってくる。この不安を払拭するために,また新しくコードを書く......とかいった具合に。こゆ考え方は,テストファーストな開発の原型になるものなんだと思います。書いてから検証してリファクタリングする......というのは,形だけ真似していても多分ダメで,こうした違和感というか制御に対する気配りができるかどうかが核として備わってなくちゃいけないんじゃないだろうか。その気の配り方が,テスト自体の品質にモロに影響する,と。テストについて考えているんですけれど,なんだかいい話を聞いた感じ。実践に移すのは大変なんでしょうけど。