オブジェクト指向に入門中の高橋征義です。

Fujikawa Norihide <tensyuu / rena.club.ne.jp>さん:
> 過去MLの記事などを参考に、
> いたって普通(?)の掲示版(Normal BBS β版)を作ってみました。
> 
> 	http://www.tensyuu.com

β3版を拝見しました。
http://www.tensyuu.com/ruby/normalbbs.txt

> ところで、プログラミング入門(原 信一郎 著)の173ページに、
> グローバル変数は使わない方がいいと書いてありますが、、、
> グローバル変数をこれでもかっていうくらいに使っていて、
> うーーむ、やはり書き直すべきですかねぇ。

どうもグローバル変数はなくなったようですが……。
えーと、本当は「『グローバル変数』を使わない」ではなく、
「グローバルに変数を使わない」、なのです。

500行くらいのプログラムのうち、半分以上がトップレベルにあると、
ローカル変数も実質グローバル変数みたいなものになってしまって
います。なので、これはあんまりうれしくありません。
それならば、いっそのこと cgi と cookie くらいをグローバルにして、
あとは細かくメソッド化する、とかの方が、すっきりしたプログラム
になるかもしれません。


あと、そこで使っているファイルロックの使い方は、場合によっては
問題があるかもしれません。というのは、何かの事情でロックされた
ままCGIが死んだとき、ずっとロックされっぱなしになる危険性がある
からです。それでいいならいいんですが、物によってはこれを避ける
ため、一定期間たったロックはアンロックしていいことにしたり
します……が、ここでもまた微妙な問題があったりします(ややこしい)。
詳しくは、大崎博基さんの「Perlメモ」の、

排他制御(ファイルロック)を考える
http://www.din.or.jp/~ohzaki/perl.htm#File_Lock

をどうぞ。Perlの話ですがRubyにもそのまま当てはまります。


また、HTMLのエスケープには CGI::escapeHTML(string) が
使えます。あ、でも、これだと文字列をまるごと複製してしまう
のか。
置換したいHTMLが大きくなりそうで、パフォーマンスを気にする
んだったら使わない方がいいんでしょうか?

高橋征義 (TAKAHASHI Masayoshi)       Email:maki / inac.co.jp