2005年02月16日

NullObject

   このエントリーをはてなブックマークに追加 Clip to Evernote
NullObject を導入したら、
while ( (tok = lex.NextToken()) != null ) {
...
}

という箇所が
while ( !((tok = lex.NextToken()) is NullToken) ) {
...
}
となってしまった。うーーん、読み難いですね。
「それは、IEnumerable を実装して、foreach を使えるようにすれば、
いいんじゃないの」と誰かから言われそうですが、今は面倒なのでパス。
while ( (tok = lex.NextToken()) isnot NullToken ) {
...
}
とでも書ければ良いのだけれど...
  

Posted by gushwell at 22:15Comments(0)TrackBack(0)

2005年02月13日

Visitor パターン

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visitorパターンを勉強しましが。他のパターンに比べ、Visitorパターンは難しいですね。ダブルディスパッチは直感的にわかりずらいので、理解するまで、時間が掛かってしまいました。僕のような頭の悪い人間は、実際に動かして確かめるまで、なぜ、Treeをたどれるのかが複雑でわかりませんでした。
普通に再帰処理でたどるほうが僕には分かりやすいです。
でも、いろいろ考えて、なるほど、Visitorパターンが有効だということが少しづつわかってきました。
オブジェクト指向的に考えれば、ある機能というのは、そのデータと一緒にカプセル化するのが普通ですが、機能の追加が頻繁に発生することを考えると、データを保持しているクラスに機能を追加してしまうと、メンテナンスが大変になってしまいます。
Visitorパターンは、そういった時に力を発揮しそうです。
一方、機能よりもクラスの数が増えるほうが頻繁にあるとすると、メンテナンスはそれほど楽ではありませんね。

どちらにせよ、通常の再帰処理の他に、Treeをたどる方法を習得できたということは、とても大きな収穫でした。  
Posted by gushwell at 22:26Comments(0)TrackBack(0)