2004-08-09(Mon) [長年日記]
■1 LL Weekend 2004: 一日後
トラックバックページや反応リンク集を読んでいるとなかなかハレからケに戻れないな……。褒められてたりスルーされてたり、勉強になる。Groovyのプレゼンについて、インパクトだけで勝負してしまったので、幾らか補足したいとは思っているのだが、なかなかまとめらない。
それは「リファクタリング」ではない
会場での発言(とくに2日目)やウェブ上の記述で思ったのだが、どうやらLL界でもリファクタリングという言葉だけが一人歩きしちゃってるようだ。単体テストを書かずに行っている「その行為」をリファクタリングと呼ぶのはやめてほしい。「コード整理」とか「再設計」とか、とにかく「リファクタリング」以外の言い回しをお願いしたい。
追記:全ファ連からの援護射撃
bliki_jaの小人(最近サボり気味)としてこの記事にリンクを張ってなかったのは、残念。よって、切腹!!!
ちなみに全ファ連は「全日本ファウらー連絡協議会」の略で、私の脳内にだけ存在する組織。
「我々が見たあのプレゼンは、ツールではなく、Objectだったんだよね。Objectを見たわけよ。」
抽象クラスとインタフェースが、とかクラスとインスタンスが、とかメソッドのスコープが、とかそんな概念を弄んで「オブジェクト指向」とか言っていた自分を恥じる。心より恥じる。こういう時の気分を表すときの記号こそ、orz なんだろうな。
——もう一度探し出したぞ。何を? オブジェクトを。
御意、「リファクタリング」を見直さなければいけない時期に来ているようで。re-factoring(因数分解)の誤解は相当広まっているのか!?
Pythonな方が「リファクタリングしたものを公開する」とかおっしゃってました。きっと、テストコードがつくのでしょう。楽しみです。
リファクタリングをするためにはUnitテストは必須なのですか?リンク先でもファウラーはそういうことは言ってないようですが...仮にリファクタリングにテストコードが必須だとるすt、リファクタリングの時にテストコードをいじることはリファクタリングではないのですね。テストコードのテストコードは存在しないのですから。自分で書いてて良くわからなくなりました(汗)
リファクタリングにはユニットテストは必須です。<br>ちょっと強引な考えかもしれませんが、テストコード=仕様、ですので、テストコードに手を入れるということは、仕様を変更したと考えてみるのはどうでしょうか。
コードを進化させる際の一つの局面としてリファクタリングが<br>あるように思います。<br>リファクタリングはたいてい数分間のできごとだったりしませんか?
言及どもですぅ。調子に乗って更にウダってみました。 http://hpcgi2.nifty.com/guion3/tiki/tiki.cgi?c=v&p=%B5%BA%2F%A4%D6%A4%C4%A4%D6%A4%C4%2F040813<br><br>リファクタリングには"仕様"は必須でしょうね。仕様を軸足にして、もう一方の足(?)を回転させる感じ。<br>そして仕様を効果的(確実)に踏んづける手段として自動Testingがあるわけで…と理解しています。<br><br>で、LLなどの軽量な記述手段があって初めて"(テスト)コードが仕様だ"と胸を張れるんでしょうね。<br>うんこなJavaやCでUnitTest書くのって少々抵抗があります。後で読むのが大変なんだもん。<br>「コメントを書きたくなるような言語」は避けたいですね。<br><br>どっちにせよ、LLを知らない子供たち(==結構多数派であろう世のプログラマ諸兄)は可哀想です:-)<br>個人的にも、仕事の某独自システムにRubyラッパーかぶせて奮闘してますです。