OOP

サービス層には何を書くんだったか

レイヤーアーキテクチャにおいて、サービス層には何を書くべきなのか(書かないべきなのか)を見失いそうになったので、もう一度読み直してみた。 エンタープライズ アプリケーションアーキテクチャパターン /マーチン・ファウラー (著), 長瀬 嘉秀 (監訳), 株…

クラスとオブジェクトのメタファ

OOP

さすがに哺乳類(Mammal)の系統でクラス階層を説明するのはあまり見なくなったな。最近見たのは「たい焼き器」がクラスで「たい焼き」自身がオブジェクト(インスタンス)というものだ。これは喩えとして良く出来ているし日本らしくて好きなんだが、日本に限ら…

etymology of Impedance mismatch

昨日のエントリで"インピーダンスミスマッチ"という用語に対してのコメントを頂いた。 インピーダンスミスマッチ」という言葉を最初に使った人はたぶん洒落だったのでしょうが 後から使う人は意味も無く使っている気がします。 コメントの返答にも書いたが、…

クローン

OOP

C++のCopy Constructor、DelphiならばAssign、JavaのCloneable。そういや、最近クローン(Clone)って使わなくなったな。シャロウ/ディープ等コピーの違いが誤解やミスを招きやすいからか? 我々がミュータブル/イミュータブルをきちんと意識し出したからか? 違…

インタフェースと実装クラス名の"Impl"

OOP

私にとっての語源というか、発祥は"GoF本"。少なくともそれ以前に"Impl"という接尾詞を付けることは知らなかった。元ネタに関しては完全に乗り遅れたんで、議論に参加する資格すらない。(なのでトラックバックも打たない) そんな私はインタフェースの実装ク…

同族嫌悪

OOP

他の人が書いたコードを見ると、どうしても馴染めない(ぶっちゃけ嫌い)なコードの書き方ってのがある。幾つか挙げると、 参照(変数)の使いまわし object obj = GetA(); if ( obj != null ) Aの処理 obj = GetB(); if ( obj != null ) Bの処理 obj = GetC(); …

継承の優先度

業務アプリにおけるOOPの黎明期、既存の処理を拡張する必要があった場合、継承はかなり優先度の高い選択肢にあったと思うが(差分プログラミングという言葉がもてはやされた頃だ)、インタフェースの登場で優先度は低くなった。 DIコンテナのような、依存性を…

カプセル化と情報隠蔽

OOP

artonさんのエントリより カプセル化した結果は、個々のオブジェクトがそれぞれの役割に応じた処理をするようになること、だ。そのために、必要となる操作とデータをクラス単位にまとめることが、カプセル化。別にprivateかどうかは関係ない。ただ、カプセル…

制御の逆転とIDisposable(後始末編)

制御の逆転とIDisposable (DIxAOPによる解決)の続き。 追記 : このままではちょっとしたまずいことが発生する。それに関してはまた別なエントリで。 含みを持たせた終わり方だったのだが、ここで書いたちょっとしたまずいこととは、IDisposableなオブジェク…

制御の逆転とIDisposable (DIxAOPによる解決)

んなわけでAOPでIDisposableをインターセプトして、IDisposable.Disposeを無視(artonさんの言ってる事) or コンテナ制御への無効な介入として拒絶して例外を投げる。(自分が言ったパターン) AOPコンテナによるオブジェクトライフサイクルの管理 - 菊池 B…

制御の逆転とIDisposable (Interface Injection)

解らなくなってきたので、整理することにした。 例えばDIコンテナで生成、管理しているシングルトンなオブジェクトが(singletonってのがポイント)、クライアント側で(誤用を含めて)Disposeされてしまったオブジェクトの復旧をどうするか、ということが、ふと…

制御の逆転とIDisposable

IDisposableを実装する(かもしれない)オブジェクトの後始末は簡単だ。IDisposableを実装していれば、メソッドDispose()を呼べばよい。 if ( component is IDisposable ) { (component as IDisposable).Dispose(); } ならば、一度DisposeされたIDisposableオ…

パターンランゲージ

買ってから長らく積読だったこの本だが、artonさんのエントリに触発されて読んでいる。正直な所、本の内容は"Pattern Language"というより、どちらかというと"Beyond Gof Book"だったのだが(PLoPコミュニティ会議のまとめなので当たり前だ)、これはこれで面…

偽の一枚札

メモリに乗っかったが最後、席を譲らないWebアプリケーションならまだしも、クライアントアプリケーションでシングルトン(singleton)なクラスを乱発するのはいただけない。きちんと設計すれば解ることだが、クライアントアプリケーションにおいて、本当の意…

WindowsForms用のDTO

未だにFormクラス自体をDTOと見なす文化もあるんだが、それはもう御免こうむりたい。かといって毎回DTOを起こすのも面倒なので、自動生成したいと目論んでいる。方法は頭の中にあるんだが、時間が無い。 もっと時間が欲しいな。追記>もっと時間が欲しいな。 …

工夫する余地

C#2.0時代のゲームプログラミング(38) - やねうらお−よっちゃんイカ(ry .NET関係ではコーディング指針を示した書籍が少ない。(というか私は日本語で書かれているものは寡聞にして知らない) C#はC++よりはどちらかと言えばJavaに近いので定評のあるJava本には…

サーバプラットホームが全てを決める(DTOとDAO)

私は自分のエントリが言及されたり、コメントされた場合にはできるだけ"すぐ"に反応するようにしている。出不精な私でもプロの開発者とコミュニケーションできる機会だからだ。DTOとDAO - Mimori's Algorithms tDiaryそれなのに、すぐ反応しないで申し訳ない…

Convention over Config or Corner - Cutting

OOP

"Convention over Config"(以降CoCと略す)はRailsが提唱する「設定よりは規約を重視」というキーワードだが、すっかり業界の流行り言葉として定着しつつあり、至るところで使われている。特に、工数の投資無しにEoDを歌える魔法の言葉っぽいところもあり、な…

DTOとDAO

DataSetかPONOか!? - sugimotokazuyaの日記 DataSet vs カスタムエンティティ - #87にっき私はPONOか、DataSetかの選択は用途、つまりデータが使われる層に依るところが大きいと考えている。PofEAA(Patterns of Enterprise Application Architecture)に当て…

期待する、しないこと

OOP

L'eclat des jours(2006-05-19) タイムリーだったし、我々は提供者と利用者のどちらの立場にもなり得るので興味深い。artonさんが列挙したものは全て同意。他にあるかな。 利用者に期待しない ソースコードが読まれることを期待しない フィードバックを期待…

コンポジションでやってはいけないこと

OOP

階層中の特定のオブジェクトのequals(Equals)メソッドを安易に再定義(override)すること。下手をすると全ての階層のオブジェクトに渡って、同メソッドの再定義を余儀なくされるだろう、というか余儀なくされたので止めた。あと、コンポジションを構成するク…

自己フィードバック

OOP

OOPである程度大規模のプログラムを書いていると、自分で設計したはずのクラス群なのに、どうもしっくりこないというか、いわゆる身につかない時期がある。もちろんテストも完了しており、論理にも矛盾はないはずなのにだ。そんな時は人に説明してくれ、とい…

Komodo The Killer IDE

OOP

ActiveState Komodo Ruby(with on Rails)等のWeb開発向け言語をサポートするIDE。実際にRubyをデバッグしていると思われるスクリーンショットが用意されているが、 http://www.activestate.com/_images/screenshots/ss_Komodo_rails_large.gif 私なんかはミ…

図の威力

久しぶりにJava側の開発作業を行っている。Javaの開発は、過去に自ら決めた開発手順を守らなくてはならないので、非常に面倒で手間がかかる。Javaフレームワークの俺様開発手順(保守フェーズ) 1.UMLエンジニアリングツールでUMLクラス図を中心にクラス設計(…

インタフェースの継承

ここ暫くは.NET2.0ネタに終始してたし、正直疲れたので、今日は久しぶりにまったりとできるネタ。次のようなインタフェースがあるとする public interface FieldAccessible { string getFieldA(); void setFieldA(string fieldA); string getFieldB(); void …

訃報: John Vlissides氏

OOP

一つ前のエントリでTemplateパターンについて書いてましたが、偉大な"Gang of Four"の一人であるJohn Vlissides氏が亡くなられました。非常に残念です。謹んでご冥福をお祈り致します。Martin Fowler's Bliki John VlissidesJohnVlissides氏の追悼Wiki John …