受託開発やコンサルティングを行うthoughtbotのブログにて、Sandi MetzルールというRubyプログラマ向けのルールが紹介されていました。このルールは、プログラマであり『Practical Object-Oriented Design in Ruby』(注1)という書籍も執筆しているSandi Metz氏が紹介したもので、次のような内容です。
- ① クラス内のコードが100行を超えてはならない
- ② メソッド内のコードが5行を超えてはならない
- ③ 4つより多い引数をメソッドに渡すようにしてはならない(ハッシュによるオプションも同様)
- ④ コントローラではただ1つのオブジェクトだけをインスタンス変数化できる
方向性としては『Thoughtworks アンソロジー』(注2)で紹介されているオブジェクト指向エクササイズに通じるものがありますね。thoughtbotのブログでは、このルールを適用して得られた知見として「単一責任の原則を徹底するようになる」「条件分岐ではなく、適切に命名されたプライベートメソッドを作ってそれを呼ぶようになった」「テストも100行以内に収めることを心がけるようになった」といったことも紹介されているので、ぜひ参考にしてみてください。
なお、上記の4つのルールとは別に、「適切な理由があると考えられる場合」と「ペアプログラミングのパートナーやコードレビュアが許可した場合」にはルールを破ってもよい、というルール0があるのも大事なポイントです。
URL:http://robots.thoughtbot.com/post/50655960596/sandi-metz-rules-for-developers
- 著者プロフィール
安藤祐介(あんどうゆうすけ)
下北沢OSS カフェに毎週出没中。ソーシャル本棚librize.com登録4万冊突破おめでとうございます!
Twitter:yando
小倉純也(おぐらじゅんや)
この号が出るころにはqnypがオープンしてるといいな…。
Twitter:junya
溝畑考史(みぞはたたかし)
トライアスリートになっている予定です。
Twitter:beatak