2010年10月31日日曜日

Python 3のデザインパターンでメタクラスしてみた(1)

必要もないのにPython 3とデザインパターンとメタクラスを使うのはPythonプログラマ的厨二病の定番らしいので、とりあえず全部混ぜてエントリを書いてみました。(挨拶)

Pythonでデザインパターンを試す場合はGoFのSingleton パターンが定番らしいのですが、今回は私の好みでFlyweight パターンを選択しました。
Flyweight パターンの詳細については、恐れ入りますがWikipediaの該当項目を参照してください。


2010年10月29日金曜日

Pythonのメタクラス

Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls
Pythonのメタクラスの__init__()メソッドの第一引数はselfじゃなくてcls

大事なことなので二度言いました。(挨拶)

参考:Javascript's Prototype Inheritance in Python のコメント欄

Mac OS XでEclipse 3.6.1とPydev他をインストールしてみた(2)

前回からの続きです。


2010年10月27日水曜日

Mac OS XでEclipse 3.6.1とPydev他をインストールしてみた(1)

Eclipseが3.5から3.6に自動アップデートしてくれないのを知らなかったので、今まで3.5を使い続けていたのですが、今回Eclipse 3.6.1とPydev他をクリーンインストールしてみることにしました。

2010年10月26日火曜日

Python 3のunittestでprint関数をテスト

Python 3でprint関数の出力をテストしたい場合、doctestを使うのがPythonらしいやり方のようなのですが、doctestの方は使い方のサンプル程度にして、しつこいテストはunittestでテストした方がすっきりしそうなので、unittestでprint関数をテストする方法を探してみました。

するとどうやら、標準出力をio.StringIO()にしてしまうのが定番のようでしたので、さっそく試してみました。


2010年10月25日月曜日

読了『バグがないプログラムのつくり方』

先日購入したまま少し放置してたけど、内容は平易なのでさっくり読了。

バグがないプログラムのつくり方 JavaとEclipseで学ぶTDDテスト駆動開発 (Be agile!)
川端 光義 倉貫 義人 兒玉 督司
翔泳社
売り上げランキング: 71090

プログラムのバグに困ってる人にテスト駆動開発(以下、TDD)を紹介しつつエクストリーム・プログラミング(以下、XP)の世界に招待するような内容で、XPのTDD以外の要素については、「書籍○○○○をぜひお求めください」的な感じ。

私自身はPythonのTDDの参考にしたかったので、Java言語に興味は無いのだけど、かなり俯瞰的な内容なので、全体の1/3程を占める第3部「やってみよう」のコード本体とデザインパターンの具体的な話以外は普通に読めたし、2004年発行の割には、それ程古臭くは感じなかった。(ひょっとすると、Javaを知らないから掲載されてるコードを古く感じなかったのかもしれない)
コードを書き直したい時にそれまで書いて来たテストが背中を押してくれる感覚や、著者がTDDを素晴らしいと感じている様子がちゃんと伝わってくるのも良かった。

しかし、XPに重きを置きすぎて、TDD以外の周辺要素の説明にページを割き過ぎた感じが否めない。付録Aの「テスト駆動開発の疑問」が全8問だったのは、この本が求める現状からの変化の大きさを考えれば明らかに少なすぎ。

私みたいにTDDを何も知らない人が、シナリオのスムーズさに多少眉に唾をつけつつ読む分には、そんなに気にならないかもしれないけど、TDDを業務用途で導入するために、他人を説得する必要がある人は、何か別の本を探してみた方が良いかもしれない。