C#やASP.NETをはじめとするプログラミング技術日記を綴っていきます。
« 2007年04月 | メイン | 2007年06月 »
2007年05月のアーカイブ
Categories
Archives
メールマガジン
正規化
正規化できない人って多いなあと思う、今日この頃。
正規化なんて、初級シスアドにも出てくる程度の常識だと思うのですが。
教科書に載っているようなことを覚えずに、力ずくでコーディングしちゃダメだ。
アルゴリズムを考えるのも確かに大事だけど、こういう定石を覚える方が先だと思う。
いくら頭がよくても、大概の人はこういう定石を考えた人には遠く及ばないので、時間の無駄といえる。
もし同レベルの賢さで、運良く同じ結論にたどり着いたとしても、やっぱり考えた時間は無駄だ。
タイプセーフなSession操作
Higtyさんのオリジナル版はこちらから
[CodeZine]ASP.NETのセッションをタイプセーフに取り扱うクラスの作成
[ひぐたぅん]ASP.NETのセッションをタイプセーフに取り扱うクラスの作成
GW前に出来ていたのですが、アップロードを忘れていました(汗)
オリジナル版と比べて、抽象化しまくっているので構造は複雑になっていると思います。
中級者以上向けでお願いします。
あと、弁慶Frameworkに組み込むことを前提に作っていますので、namespaceは変わっています。
オリジナル版と比較される時は、そのあたりに注意してください。
実際に作ってみて、オリジナル版のシンプルさと使いやすさのバランスの良さを感じました。
弁慶Frameworkに入れるためとはいえ、ちょっといじりすぎたかもしれません。
ほとんどの場合は、オリジナル版の方が使いやすいんじゃないかと思います。
以下、説明
まず、Castクラスですが、オーバーロードを1つ増やしています。
で、オーバーロードしたメソッドを呼ぶようにしたことで、重複したコードが無いようにしました。
速度を重視すると重複して書いた方がいい訳ですが、弁慶Frameworkは速度をあまり重視していないので。
で、オブジェクトの型変換は、オリジナル版ではToStringでしたが、これだとDouble型のときに丸められてしまうため、普通(?)に型変換することにしました。
型変換に失敗すると、当然の事ながらExceptionが出ますので、呼び出し元で処理してください。
Exceptionを呼び出し元に任せるのも、弁慶Franeworkの考え方に合わせました。
肝心なSession操作ですが、機能と実装を分けています。
何故か?というと、NUnit等を使用するときSession操作が出来ないので、一時的にHashTableを使用するようにするためです。(というか、このためだけに面倒くさくなりました)
機能と実装を分けたことで、一時的に実装部分を差し替えるという訳です。
この差し替えサンプルについては、NUnitのテストクラス(SessionValueTest)を見てください。
Form、QueryStringも大体同じです。
ViewState、Cockieは、あえて操作クラスを作る必要性が無いような気がしたので、今回は作ってません。