Rails ActiveRecordのテストコード

7月 26th, 2009 by nashiki コメントを書く »

ActiveRecordって

WEBアプリケーションを高速開発するのに貢献した、Ruby On Railsを書いた人がどのようなコードを書いたのか勉強したいと思った。

ActiveRecordのコードを全体像を見てみました。 ActiveRecord自体の説明は下記参照

ActiveRecord (以下 AR) は RLR 第 4 回 に取り上げられたように、Ruby での O/R マッピングライブラリのひとつです。 AR を使えば、簡単かつ効率的にリレーショナルデータベース上の情報を Ruby オブジェクトとして扱うことができます。その理論的なところは P of EAA: Active Record を見てください。 参照:RubyOnRails を使ってみる 【第 3 回】 ActiveRecord

コードステップを計る

まずは、コードステップ数。 Project AmaterasのNetBeans対応ステップカウンターに感謝します! 私は、NetBeansを使っていますが、Eclipseにも対応してますよ。

CAP000012

Netbeans内で、実装コード、空行、コメント行がフォルダ単位で調べられます。

activerecord-2.3.2 実装コード

  • 57ファイル、実効コード9.9KStep、コメント7.2KStep
  • 1ファイルあたり、実効コード173Step、コメント126Step

テストコード

  • 188ファイル、実効コード19.7KStep、コメント0.5KStep
  • 1ファイルあたり、実効コード104Step、コメント3Step

驚いたことに、実装コードとほぼ同じぐらいコメントを書いている。 コード1行に対してコメント1行ってすごいね。 これは、Rdoc 使ってドキュメントも作っているからこれぐらいの行数になるんですね。

更に、びっくりしたのは、テストコード!。 これ、実装コードに対してテストコードを2倍書いています。 しかも、テストコードのファイル数は3倍以上で作っています。 少ない行数で沢山のテストコードを細かく実装しているんですね。 テストコードにコメントは作っていませんね。 テストコード自体を文章で説明しなければいけないテストコードは書くなということでしょう。 簡潔に誰が見てもどのようなテストを実施しているのかわかるテストコードを書いています。 また、書く必要があるときは、実装コードの中に集約しているのでしょう。そうすれば、RDocの中に仕様を集約できるからね。

定量的に品質を考える重要性

最近僕もあるプロジェクトをTDDで開発しています。 上記、ActiveRecordのテストコード作成と実装コードの比率は参考になりました。 テストファーストの考え方とか、実装するコードのステップ数とか、何を何のために作っているかを意識しながらプロジェクトを進めていくことは大事だと思います。 改めて、品質を考える上でも定量的にコーディングをとらえることは重要だと思いました。

Advertisement

2 comments

  1. eggman より:

    拡張子erbのステップ数はこのソフトでは数えられますか?

  2. nashiki より:

    eggmanさん

    残念ながらerbは「未対応」と表示されてしまいます。

    梨木

コメント・ツッコミ歓迎