海外テック情報局

きれいな設計を身に付けるためのSandi Metzルール

この記事を読むのに必要な時間:およそ 1 分

画像

受託開発やコンサルティングを行うthoughtbotのブログにて,Sandi MetzルールというRubyプログラマ向けのルールが紹介されていました。このルールは,プログラマであり『Practical Object-Oriented Design in Ruby』注1という書籍も執筆しているSandi Metz氏が紹介したもので,次のような内容です。

  • ① クラス内のコードが100行を超えてはならない
  • ② メソッド内のコードが5行を超えてはならない
  • ③ 4つより多い引数をメソッドに渡すようにしてはならない(ハッシュによるオプションも同様)
  • ④ コントローラではただ1つのオブジェクトだけをインスタンス変数化できる

方向性としては『Thoughtworks アンソロジー』注2で紹介されているオブジェクト指向エクササイズに通じるものがありますね。thoughtbotのブログでは,このルールを適用して得られた知見として「単一責任の原則を徹底するようになる」⁠条件分岐ではなく,適切に命名されたプライベートメソッドを作ってそれを呼ぶようになった」⁠テストも100行以内に収めることを心がけるようになった」といったことも紹介されているので,ぜひ参考にしてみてください。

なお,上記の4つのルールとは別に,⁠適切な理由があると考えられる場合」「ペアプログラミングのパートナーやコードレビュアが許可した場合」にはルールを破ってもよい,というルール0があるのも大事なポイントです。

注1)
Sandi Metz, Practical Object-Oriented Design in Ruby:An Agile Primer, Addison-Wesley Professional, 2012
注2)
ThoughtWorks Inc.著/株式会社オージス総研オブジェクトの広場編集部訳『ThoughtWorks アンソロジー ――アジャイルとオブジェクト指向によるソフトウェアイノベーション』オライリー・ジャパン,2008年

URLhttp://robots.thoughtbot.com/post/50655960596/sandi-metz-rules-for-developers

著者プロフィール

安藤祐介(あんどうゆうすけ)

下北沢OSS カフェに毎週出没中。ソーシャル本棚librize.com登録4万冊突破おめでとうございます!

Twitter:yando

小倉純也(おぐらじゅんや)

この号が出るころにはqnypがオープンしてるといいな…。

Twitter:junya

溝畑考史(みぞはたたかし)

トライアスリートになっている予定です。

Twitter:beatak

コメント

  • Re:

    メソッド5行縛りw

    無意味に一箇所からしか呼ばれないメソッドがあちこちに定義されそうだなw

    当たり前だがそんなコードは読みづらい。

    Commented : #1  narucy (2013/06/28, 14:55)

コメントの記入