Perl のオブジェクト指向を学習中

私は、オブジェクト指向な書き方を覚えたのは、社会人になってからかなり経っていた。最初に知ったのは C++ だが、オブジェクト指向な書き方は、全く理解できなかった。当時は、Cや awk での簡単なプログラムを Perl に移そうとしていたころだったと思う。

その後、親会社からもらってきたキットの中に ruby のスクリプトが入っていたので、それをメンテする必要から勉強し、オブジェクト指向を学んだ。それ基に ruby をはじめ、 javascript や PHP にも使って簡単スクリプトを書いてきた。

PHP や ruby を使うようになって Perl は使わなくなったので、Perl のオブジェクト指向な書き方は、今、改めて勉強している。派遣先の今見ているシステムが Perl で書かれているため。

Perl をはじめとするスクリプト言語で、変数のスコープを気にするようになったのは、世の中で java が流行っていたころだと思う。それ以前からCのプログラムでは、関数内で使う変数を定義するのが当たり前で、昔の BASIC のような変数の使われ方は、嫌いだった。まあ、20行から30行程度のスクリプトもあるので、いちいちそういうのまでは気にしていないものの、長くなりそうな場合は、必ず気を使うべきことでしょう。

ただし、昔かかれたプログラムはそうはいきません。今見ているシステムがまさにそうで、階層化設計もあまり考えてなかったのかも、というまるで BASIC なプログラム。ということで、昔のコードを活かしつつ、なんとか変数を使いまわしできないように、オブジェクト指向的に書き換えようかと思っています。

しかし、かなり難しい。新たに書いてしまった方がすっきりする箇所がいくつもある。さらに、後から追加した人は、何を考えてこのコードを書いたか理解に苦しむコードも。時間が無い中で、別のところで書いたコードを使いまわしているうちに、より複雑になってしまったような感じだろうか。とにかく、余計な処理?と思えるコードがかなり見られる。よくこれで動いていたものだと、関心してしまうくらい。

とはいえ、うまいやり方を見つけ出し、すっきりしたコードに修正できた時の達成感はまた格別。今は時間があるからこんなことをやってられるが、納期が迫った中で、このシステムをデバックしたエンジニアは、さぞ大変だったでしょう。