作者: 閑舎
日時: 2006/7/07(13:33)
wtnabe@... (ねこ丸) さん wrote.

> * オブジェクト指向で生産性が上がるなんてのは最初のうちは嘘っぱち

みたいですね。

最初 PukiWiki の convert_html.php をそのまま使おうと思ってやってみると、
いろいろ他のファイルを include していて、単体では動作せず、クラスなしで
フルスクラッチで書くほうが早いと思ってその PHP は 2-3日で完成。

しかし、convert_html.php が気になっていて、ここはクラスをばりばり使って
ますので、そろそろ本格的にクラスを使ってみようか、と思いました。
convert_html.php は肝心なところでハッシュを使っていることとか、Wiki フォー
マット以外では通用しない parse になっているところとかが気にいらず、将来
容易に拡張できるような設計で始めるべき、と思ったのもあります。

で、全てのタグというかブロックをクラス化し、Block という基底クラスの 
parse と toText メソッドを参照することにしたわけです。だめならオーバーラ
イドと。実際のところ、toText は if 文でごまかしてオーバーライドなし、
parse は何度も Block を書き直したあげく、あきらめてオーバーライドを始め、
半分近くのタグでオーバーライドして終わり。その間 10日くらいかかってます
ね。不慣れなのを差し引いても、生産性向上にはなってない。

>   僕にとってクラスってのは
> 
> * 複数の関数で共通の変数を持てるので「引数を減らせる」
> * 一つの関数で慌てて結果を返す必要はない
> * したがって一つの関数を短く分かりやすくすることができる
> 
>   程度のものなんです。

なるほどね。そういう言葉は感覚的にとても参考になります。

>   僕も最初 PHP で書いてみたんですが、その後 Perl で書いて、Ruby で書い
> て、ようやく飲み込めました。Perl の OO は書くの超面倒くさいですけど、
> Perl native の人は PHP で練習するよりも絶対に Perl で練習した方がいいと
> 思います。時間は掛かりますけど、クラス内部で何をしているのかが肌で分か
> ります。

時間があればやってみますね。今回は、スクリプトぼけから回復し、まず PHP 
で書いてすぐホームページ上で使いたかったというのがありましたから。

>   ちなみに Perl については Bruce. さんの訳された perldoc を読むのがい
> ちばんいいと思います。あるいはことあるごとに宣伝してる気がするけど
> 『Perlプログラミング救命病棟』。

参考にさせていただきます。いろいろ教えてもらい、感謝してます。

--
本田博通(閑舎)
テキストとスクリプトの http://www.rakunet.org/TSNET/