カバレッジの厳密さにどこまでこだわるか

2008-03-05
2011-01-08
かなり古い記事です。現在も有効な内容であるかどうか分かりませんのでご注意ください。

rcovは行カバレッジのツールなので、次のようなコードでは問題なくカバレッジを判定できる。
@itemがnilであるケースがテストされていなければ2行目のカバレッジは赤だ。

if @item.nil?
  return render(:nothing => true, :status => '404 Not Found')
end

しかし次のようなコードでは if の結果がどちらに分岐してもカバーしているとみなされる。
@itemがnilであるケースがテストされていなくてもカバレッジはパスする。

return render(:nothing => true, :status => '404 Not Found') if @item.nil?

ということなのでif修飾子を使うのはやめた方がよい。おわり。

.
.
.

というのはウソで、カバレッジの厳密さにこだわってコードの書き方を変える必要はないと思う。
カバレッジは所詮目安なんだから。

あと100%である必要もないし、100%であることを強制するのはナンセンス。
中身の薄いテストでも100%にするだけならできるわけなので。

でもまあTDDで開発してたら自然と100%になる気はするなぁ。
100%にする必要はないと言ったけど、100%だったらやっぱり気持ちいいな。
だからTDDは気持ちいい。

うむ、なんだかきれいにまとまった気がする。(ほんとか?)

参考

コード品質を追求する: カバレッジ・レポートに騙されないために

Profile

フルスタック気味のフリーランスプログラマー。

どちらかと言うと得意はインフラ構築とサーバーサイドプログラミングですが、フロントエンドもぼちぼちやっています。

最近の興味範囲はWordPress、AWS、サーバーレス、UIデザイン。

愛車はセロー。カメラはペンタックス。旅好きです。横浜在住。