メニュー

TEST http://d.hatena.ne.jp/devbankh/201001 モックやスタブを使った効率的なユニットテスト http://d.hatena.ne.jp/devbankh/201002 モックとスタブの違い コミュニケーション http://d.hatena.ne.jp/devbankh/20051124 簡単かつ効果的に話すために

モックとスタブの違い

"モックオブジェクト"という言葉は、テストのために本物のオブジェクトをまねる特殊なオブジェクトを表す言葉として定着した。しかしモックという言葉は元々スタブをキャッチーにしたものでなく、[スタブを使ったのとは別の] ユニットテスト方法を用いるため…

モックとスタブの違い

マーティン・ファウラー氏http://martinfowler.com/の以下のページを翻訳したものです。 Mocks Aren't Stubs モックはスタブではない 関連ページ Unit Test More Efficiently with Mock Object Alternativeshttp://www.devx.com/Java/Article/22599 日本語:…

モックとスタブの違い 状態中心のテスト

状態中心のテスト 2つのスタイルを簡単な例で説明するところから始めようと思う(この例はJavaで書かれているが、どのオブジェクト指向言語でもこの原理は通用する)。オーダー[注文]オブジェクトを取得して、倉庫オブジェクトから注文を引き当てるようにし…

モックとスタブの違い 相互作用中心のテスト

相互作用中心のテスト 今度は同じ振る舞いと使い方を相互作用中心のテストでやってみる。このコードでは、モックを定義するのにjMockライブラリを使っている。jMockはJavaで作られたものでは比較的新しいライブラリである。 public class OrderInteractionTe…

モックとスタブの違い モックとスタブの違い

モックとスタブの違い 最初に述べたように、よくモックとスタブは混同される。モックを作るのに使っている各種ツールがスタブを作るのにも申し分なく使えるのだから、混同されるのもよく分かる。ただ、[どちらもツールでオブジェクトを作ることができるが、]…

モックとスタブの違い スタイルによる違い

スタイルによる違い どちらのスタイルも有利な点と付随的に処理することがある。どちらのスタイルを使えばいいのかを理解するには、考慮することがかなりある。 フィクスチャのセットアップ 状態中心のテストでは、メッセージに対する応答に関わる全てのオブ…

モックとスタブの違い 一番良いのはどっちか?

結局一番良いのはどっちか? これは自信を持って答えるのが難しい問いだと思う。個人的に私は状態中心のテスタを行ってきたが、これまでそれを変えようという理由が見当たらなかった。相互作用中心テストにも心がひきつけられるほどの利点は見当たらないし、…

モックとスタブの違い

マーティン・ファウラー氏http://martinfowler.com/の以下のページを翻訳したものです。 Mocks Aren't Stubs モックはスタブではない

ControlがApplication/WindowedApplicationを継承する方法

ここでこのアイディアを知った。code behindここでは、MXMLとActionScriptを切り分け、リンクさせる方法を書いている。基本的には、ActionScriptクラスをMXMLで継承するという方法。 これを適用すると下のようになる。AppclicationControl.as public class A…

ViewがApplication/WindowedApplicationを継承する方法

この方法ではアプリケーションのルートがViewになるため、全て(のインスタンス)はViewから生成しないといけない。よって普通はControlからViewを生成するとこが、この場合ViewからControlを生成することになる。View(AppView.mxml)は以下のようになる。 ..…

Flex/AIRアプリでのルートエージェント

PACのコンポーネント指向の見方ではControlが中心的な役割を果たす。ルート(のエージェント)でも同じだ。しかしFlex/AIRアプリはApplicationまたはWindowedApplicationがルートクラスになる。そしてこれらはDisplayObjectだ。 PAC的にはDisplayObjectはVie…

データバインディング

これまで決めたようにViewはMXMLで記述する。MXMLでデータバインドを使うのは、たとえば DataGrid の dataProvider に(別のクラスの)変数を指定して、その変数の値が変わった時に自動的にDataGrid にも反映させるような時だ。 そうするには dataProvider …

イベントによるオブジェクト間のコミュニケーション

さて前回の続き、というか今回のモデルの実装法の続き。今度はイベントを使ったオブジェクト間のやり取りについて。View(Presentation改め)とControl、Controlと別エージェントのControlは疎結合のために原則イベントで協調するようにする。 ModelとContro…

コンポーネント指向モデルSCA

PACのようにコンポーネント指向なモデルとしてService Component Architecture英語Wikipedia(日本版はほとんど書いてない)というのを知った。 SOAの文脈で読んだが、その基本モデル(この回の最後の図)、再帰的モデルの図(この回の図)を見ると使えない…

呼び方の変更

PACということでPresentation、Control、Abstractionという言葉を使ってきたが、いざ実装するとControl以外のが長ったらしい。 そこでPresentation → View、Abstraction → Model と呼ぶ&命名規則に使うことにした。MVCと同じにする(ControlはPACのままだが…

MXMLコンポーネントをActionscriptで扱う

今回のパターンでは、PresentationをControlが操作する(ただ既述のように基本的に生成時だけ)。 PresentaionはせっかくFlexだからMXMLで定義する。つまりPresentationオブジェクトはMXMLコンポーネントになる(MXMLモジュールは分からないので除外する)。…

URLLoaderタイムアウトに対処する

ここしばらくネットにまともにつながらない。そのせいでFlexアプリでURLLoader#load()でしょっちゅうタイムアウトする。その時ストリームエラーが投げられてくる。このエラーは非同期で起きるのでtry/catchでは対処できない。イベントリスナを使うことになる…

P/A/Cの役割revised

こうして実装面も考えると、各部分の役割は以下のようになるかと考えた。 Presentation UI ユーザー入力を内部イベントの送出によってControlに知らせる イベントによるため、Controlへの依存はない Control 他エージェントと連携するのに必要な機能を司る、…

PACをなるべく簡単に実装したい

ここで、自分的にPACのそれぞれの役割をまとめてみる。 Presentation UI ユーザーの入力を(必要であれば)Controlに渡す Control 他エージェントと連携するのに必要な機能を司る、つまり、 外部から参照する自エージェントの状態保持 上位エージェントへの…

Flex/AIRでPAC的に実装するトライアル(1)

PACでFlex/AIRアプリを作るとき実際どのような構成・実装になるか試してみることにした。このサイトにPureMVCというFlexフレームワークの詳しい説明がある。これはMVCの実装を考える時に役立つ。 ただM/V/Cにあたるクラス以外にもCommandパターンやMeditator…

もうすでにあるFlexのフレームワーク

ここまできて、Flexフレームワークで世にあるものをまとめた良いエントリーを見つけた。 オープンソースFlex開発フレームワークが示すプラットフォームの大きな動き Cairngormを始め、PureMVC、Model-Glue、Foundry、Guasax Flex Framework、ARP、Flest、Eas…

PACとMVCどっちを取るか

どちらもGUIアプリでViewとModelを切り離すのでは共通している。 そしてPACは基本的にMVCの長所をカバーしていそうだ。 するとPACのMVCにない長所と短所の天秤になる。 (PACのおさらい用 from Wikipedia) PACの長所はなんだろうか。 まず、その構造からし…

その他のアーキテクチャパターン

前回紹介した、 http://osiris.sunderland.ac.uk/~cs0her/COM379%20Lectures/Lecture19.pdf にあるVisualProxyパターンや、Fowlerサイト http://www.martinfowler.com/eaaDev/uiArchs.html (日本語解説:http://d.hatena.ne.jp/propella/20071230/p1) にあ…

さて

さて、結局Flex/AIRではMVC系かPACか、どっちのアーキテクチャを使うといいだろうか。 また次回。

なるべく軽くシンプルにいこう

責務の分割は簡単で仕様的にも分かりやすくなるので、MMVCの方が少し軽量な気がする。それほど大きくないアプリであればインターフェースを使わなくていいだろうし。 http://osiris.sunderland.ac.uk/~cs0her/COM379%20Lectures/Lecture19.pdf この資料では…

PluggableMVCとMMVC

この2つが同じレベルで出てくるのは、PMVCがインテーフェースによって、MMVCがはpplicationModelによって、 View・ControllerとModelが疎結合になっっている点で似ているからだと思う。 そして、PMVCのモデルをMMVCのように分割、MMVCのApplicationModelに…

MMVC

MMVCはここの図6、図7にあたる http://www.sra.co.jp/people/nisinaka/Jun4Java/MVC/ こちらでも書かれてるように、ModelをApplicationModelとDomainModelに分けるMVC http://careless-adventurers.net/?date=20071015#p04注意点は、以下のFowler記事を読む…

PluggableMVC

まずPMVC http://www.sra.co.jp/people/aoki/SuperAsciiJ/SAscii06.html UML的に表されて参考になるとこ http://careless-adventurers.net/?date=20071025 PluggableはModelのインターフェースをMとして挟んでMVCを構成、そのインターフェースモデル の後ろ…

PluggableMVCとMMVC

Flex/AIRアプリのアーキテクチャ探索 その1 - [lib]の続きでプラガブルMVC(PMVC)を検索してたら、PMVCとModelModelViewController(MMVC)が一緒に出てきた。 (といってもどちらもMVCに比べたら全然情報が少ない)