ぐる式 (貳) より引っ越し作業中.未完.
ラベル Refactoring Browser の投稿を表示しています。 すべての投稿を表示
ラベル Refactoring Browser の投稿を表示しています。 すべての投稿を表示

2007年7月5日木曜日

Squeak: RefactoringEngine, SmallLint

RefactoringEngine

SqueakMap の Refactoring Engine によると, 3.9 以降は Refactoring Browser じゃなくて RefactoringEngine と呼ぶそうだが,まだ動かんとこがあるけど面白いかも知れんな,コレ (笑).

という感じで,以下に画像いっぱいでちょいと触ってみる.ページ番号は マーチン・ファウラー "リファクタリング", プログラミングの体質改善テクニック, 児玉公信, 友野晶夫, 平澤章, 梅澤真史 訳, ピアソン・エデュケーション, 2000, 2001, ISBN4-89471-228-8, (Martin Fowler "Refactoring", Improving the Design of Existing Code, 1999), (Refactoring Home) に従う.

メソッド名の変更 (273)

  • メソッド名を変更しようとする.メソッドを選択してブラウザの [R] ボタンをクリックするか,メソッド・リスト・ペインで右クリックしてリファクタリング開始.

    Renaming on RefactoringEngine

    MessageNotUnderstood: BrowserRequestor>>getArgumentPermutation と出て,いきなり動かないが (笑). 0006354: choosing method -> rename method from contextmenu opens the debugger - Mantis

  • しょんがないから Selector Editor を使う.

    Renaming on SelectorEditorSelectorEditor

メソッドの抽出 (110)

  • 外出ししたい部分を選択してリファクタリング開始.

    Extractiong on RefactoringEngine

  • 抽出メソッドを命名.

    Extractiong on SelectorEditor

  • 抽出完了.

    extracting is done.

    右上の画像を見れば二つに分割されたことが判る.抽出したい部分でリターンがあったりすると外出しできないなどの制限があるが,これは使えるかも.

この程度なら,メソッド名の変更 (273) もメソッドの抽出 (110) もツール任せで,引数やらテンポラリ変数やら考えんでエエ.

SmallLint

  • 実行例.

    Result by SmallLint

    長過ぎるって言われてもな〜.

2007年6月6日水曜日

マーチン・ファウラー『リファクタリング』

2001 年に 入手 したもの.

  • マーチン・ファウラー "リファクタリング", プログラミングの体質改善テクニック, 児玉公信, 友野晶夫, 平澤章, 梅澤真史 訳, ピアソン・エデュケーション, 2000, 2001, ISBN4-89471-228-8, (Martin Fowler "Refactoring", Improving the Design of Existing Code, 1999), (Refactoring Home)

しかしまぁ,書きも書いたり, 70 項目以上ですか.非常に手堅い.よく集めたもんだ,しかも全部に概要,動機,手順,例題入りである. 400 ページ以上と厚くなるのも仕方ないか.ここは一つ,薄くて持ち運びに便利な『Refactering Distilled』が欲しいところですな,著者はビール派だし (笑).ちょっと興味を引かれたのは p. 260 のヌル・オブジェクト.親クラスでヌル・オブジェクトを生成するファクトリ・メソッドを書くのがキモか知らん.

この本が面白くなるのは第十二章「大きなリファクタリング」以降. Refactoring Browser の開発者たちも一章執筆している.最終章は Kent Beck の手による.ここんとこケント・ベック関連の手持ち本を読み返して感じるんだが,この人の書く本はほんま元気が出るというか励まされるというか (笑).その理由は (通常用法とは逆で) practice and theory だと思うね.一方,マーチン・ファウラーの方は安堵するって感じかな.人柄ですかね.ヤードバーズに例えてみると,ベックの方がその名のとおりだとするなら,ファウラーの方はクラプトンなのか知らん.ペイジじゃないよな.う〜む,むしろ NIN と Fields of the Nephilim に見立てた方がしっくり来るな〜 (笑).

Refactoring Browser for 3.8. for Squeak (Squeak Swiki: Refactoring Browser).

どうでもエエけど,「Improving the Design of Existing Code」って,すでに現前するコードのデザインを改良するっていう意味だよね.プログラムならまだしも「プログラミングの体質改善」は違うんちゃうん? とか思った.生体算譜整体という意味だと思う. The Refactory, Inc. って,まだ生きてんの?

Martin Fowler's Bliki in Japanese に曰く,「システムをリファクタリングするときは、数分以上、システムが壊れたままにしてはいけない」,何当たり前のこと書いてんの? と思ったら,「ファクタリング中に2,3日システムが動かなくなっちゃってーなどと言ってる奴」がいるそうである. (梅澤プロジェクトで仕込み受けてたから) こんなのあり得ねぇ〜.ユニット・テストがない or: [しない] 環境でのリファクタリングもあり得ねぇ〜.いや,あり得るかも知れんけど,おれには振らんでくれ.

2005年6月19日日曜日

刹那的享楽的に Life with Squeak

今月初めから, Squeak 上でとあるソフトウェアのプロトタイプを書いている*1.今はまだ大半が昔書いたサポート・ツール*2の方が多くて,それ込みでクラス数は 100 越えてる.けっこう面白くてハマり中.ただし, Squeak でえらく楽させてもらってるんで,コレを Java で書き直せとか言われると辛いだろうな〜.

ケント・ベック推薦の Smalllint って Refactoring Browser のパーツなのね.最新版は 3.6 対応か〜.しょうがないから Code Review で代用中.んでもって,クラス数に比してテスト数が少な過ぎる.まぁ導入が遅かったからな.それでも (それだからこそ) 駄文生産所長 作の以下は超便利.

あとは,こんな本で動機付けと対策に.

  • 今野睦 監 "JUnit によるテストファースト開発入門", ソフトバンク, 2004, ISBN4-7973-2572-0, Java にシフトし過ぎのような気もするけど, Java 上での概観をつかむのにはかえって好都合なのかも.ま,思想的な面は言語に関係ないし.
  • ケント・ベック "テスト駆動開発入門", 長瀬嘉秀 監訳, ピアソン・エデュケーション, 2003, ISBN4-89471-711-5, (Kent Beck "TDD: Test-Driven Development; by Example", 2003), Python で xUnit が作れるということは,すでに Perl 用の xUnit ってあるのかなと思って探したら,あったよ (笑). PerlUnit: unit testing framework for Perl甘噛みさん,どうですか?

*1: 先月までは Java だった.なんで急に Smalltalk に変更になったのか判らんけど,考えれらる要因としては 1) おれの Java での開発スピードが遅い. Smalltalk なら少しは速いかも知れんと予想された. 2) プロトのブチ上げには Squeak の方が派手だと考えられた. 3) web アプリに限定する必要性が減少した. 4) 政治的な大人の判断. 5) 神様のお恵み. 6) 悪魔の試練. 7) ヘタエラ・エスメラルダの誘惑. 8) 聖杯探し.などなど.とりあえずは享楽的に今を楽しむ (笑).

*2: ドキュメント生成,コード・レビュー,レポート作成,メトリクス,青木 Lisp 一式など.