狠狠撸
Submit Search
俺がモデルだ!问题に立ち向かう
?
2 likes
?
1,350 views
Akira Suenami
Follow
TDD Boot Camp Fukuoka 2013で発表したLTの資料です。 http://tddbc.doorkeeper.jp/events/3472
Read less
Read more
1 of 12
Download now
Download to read offline
More Related Content
俺がモデルだ!问题に立ち向かう
1.
俺がモデルだ!問題 に立ち向かう 末並 晃 (
@a_suenami )
2.
お断り あまりテストの話はしません!
3.
自己紹介 ? 株式会社ファクトリアル ? Web系受託プログラマ ?
RubyとかPHPとか(最近Scalaに興味) ? 好きなもの ? テスト ? オブジェクト指向
4.
俺がモデルだ!問題とは? ? システム開発においてビジネスロジックを記述するレイ ヤーがどこなのか問題 ? 某アニメの有名な台詞をパロってこう呼ばれる完全な社 内用語 ?
データベースエンジニアは自分の設計したRDBこそがビ ジネスロジックだと言い、アプリケーションエンジニア は自分の実装したドメインモデル/サービスこそがビジ ネスロジックだと主張する
5.
例1. 最新の記事 CREATE VIEW
latest_articles AS SELECT * FROM articles WHERE created_at >= CURRENT_DATE - INTERVAL 7 day def latest where(“created_at >= ?”, Date.today - 7) end データビューを作成 モデルにメソッドを実装
6.
例2. 管理者と一般ユーザ
7.
参考书籍
8.
EAV(エンティティ?アトリビュート?バリュー) EAV(エンティティ?アトリビュート?バリュー) ? 可変属性をサポートするために、汎用的な属性テーブル を使用して拡張性を持たせておくアンチパターン。 ? 属性を自由に追加可能にはなるが、その各属性に対して 制約を設定することができない。 ?
このアンチパターンへの解決策としてサブタイプのモデ リング方法が紹介されている。 ? シングルテーブル継承、具象テーブル継承、クラス テーブル継承 ? メタデータはメタデータのために使いましょう
9.
マテリアライズド?ビュー ? ビューの全レコードを実テーブルにキャッシュする ? ビューを構成しているテーブルに挿入/更新があった場 合にはマテリアライズド?ビューをリフレッシュする ?
マテリアライズド?ビューは実テーブルのため、以下の 特性を利用できる ? インデックスの利用 ? 主キーの存在 ? その他(シャーディング等)
10.
仕様(Speci?cation)パターン ? あるオブジェクトの仕様を別オブジェクトの責務として 切り出すというデザインパターン ? 仕様クラスは以下の振る舞いを持つ ?
評価(オブジェクトが仕様を満たしているかどうか判 定する) ? 選択(仕様を満たしているオブジェクトを抽出する) ? 生成(仕様を満たすオブジェクトを新たに生成する) ? ビジネスロジックを単一のクラスに閉じ込めることが
11.
結論 「俺が…俺たちが…モデルだ!」
12.
結論 ? TDDを覚えるとコードを書くのが楽しくなる ? たくさんテストを書きたくなるし、そのためにたくさん のプロダクトコードも書きたくなる ?
不安のコントロールの方法としてデータベース派の人た ちのことがわかるといいのでは?
Download