岩本隆史の日記帳(アーカイブ)

はてなダイアリーのサービス終了をうけて移行したものです。更新はしません。

オブジェクト指向

望ましいライブラリインターフェースとは

前回の記事で「次回は、Ruptaを作成・公開するにあたって工夫した点や苦労した点について書こうと思っています」と予告しました。予告はしたものの、どこから書こうか迷っていたら、恰好のコメントをid:takahashimさんよりいただいたので、その辺りについて…

何をクラス分割の指針とすべきか

最近なんとなく: クラスの保持するインスタンス変数をなるべく少なくする インスタンス変数を使わないメソッドをクラスに含めない ようにすれば適切にクラス分割できるんじゃないかと考えていました。今日「凝集度と結合度:このコードのどこが悪いのか? -…

デメテルの法則厨がライブラリを作るとどうなるか

お題:クラス名からそのクラスを得るライブラリ Webアプリのフレームワークを作っていて、クラス名からそのクラスのインスタンスを生成したくなりました。リクエストURIによって呼び出したいコントローラが変わるためです。そこで、下記のような ClassGetter…

デメテルの法則を守るためのずるい方法

思いついた。デメテルの法則(Law of Demeter、デメテルの掟とも)とは、あるオブジェクトのメソッドの中で: オブジェクト自身 メソッドの引数 メソッドの中で生成したオブジェクト インスタンス変数 以外のオブジェクトのメソッドを呼び出すと大変なことに…

RubyとDIコンテナ

先日の日記のコメント欄に書いたとおり、まつもとさんの書かれた記事「探訪Ruby 第5回 ダイコン」(『Linux magazine』、2005年2月号)が読みたくて、同誌のバックナンバーがぎっしり詰まっている『Linux magazine the DVD Complete』を入手しました。さっそ…

Pinto公開に向けて #18 ― RSpecのモックを使ってみた

あらすじ Pintoというソーシャルブックマークサービス、およびPintoBeansというWebアプリケーションフレームワークをRubyで開発中です。開発中に気づいたことや工夫した点などを、備忘録も兼ねて書いています。その18回目です。 Rackインターフェーサが必要だ…

Pinto公開に向けて #16 ― 責務駆動設計で仕切り直すことに決めた

あらすじ Pintoというソーシャルブックマークサービスを、Rubyで開発中です(GitHubリポジトリ)。開発中に気づいたことや工夫した点などを、備忘録も兼ねて書いています。その16回目です。 ActiveSupportのDependenciesを使って、やめた autoloadを山ほど書…

Pinto公開に向けて #15 ― String等をラップした

あらすじ Pintoというソーシャルブックマークサービスを、Rubyで開発中です(GitHubリポジトリ)。開発中に気づいたことや工夫した点などを、備忘録も兼ねて書いています。その15回目です。 本題 id:akktさんによる「OOコード養成ギブス」という記事が、はて…