ステップ数とは?メリットとデメリットまとめ

ステップカウントツールを使ってステップ数を集計する作業を行う機会がありました。
ステップ数をなんのために使うのかわかっていなかったので調べてみました。

ステップとは

ステップはプログラミング時に作成された行数(ソース)のことをいいます。ちなみに英語ではLines Of Code(LOC)またはSource lines of code (SLOC)といいます。
ステップ数はソフトウェアの規模を表す指標になったり、ある程度の水準を知るのに便利です。
コメントや空行もカウントする「物理ステップ数(Physical Lines of Code)」とコメントなどの余計な行を抜いた「論理ステップ数(Logical Lines of Code)」の2つがあります。一般的には倫理ステップ数を使いますが、コメントの行数も含めるなど場合により一概にはいえません。

ステップ数のメリット

ステップ数が分かればなんとなく目安がわかるようになります。

以下にメリットをまとめます。

  • プロジェクトの規模の目安になる
    例:windowsは5000万のコードでできている
  • 単体テスト時のテスト密度を計算できる(まだ使ったことないけど)
    (テスト項目)÷(テスト対象の総ステップ数)
  • 面接時の自分の経歴として使える
    例「以前のプロジェクトでは物理ステップ数5000行ほどの開発実績があります」
  • 単純なものであれば、コードが冗長しているなどの目安となる

ステップ数がわかればなんとなくエンジニアっぽい会話ができますね。

ステップ数のデメリット

とても曖昧です。コードの書き方は人それぞれですし、ステップ数が少なければ良いコードとも言えません。
例えば以下のように同じようなコードでも行数が変わります。

//書き方1
if(true){int num = 1+1;}

//書き方2
if(true){
int num;
num = 1+1;
}

いくらでもステップ数を水増しすることができてしまいます。

以下にデメリットをまとめます。

  • あいまいなためステップ数が多いからといって規模が大きいとは言い切れない
  • コードはコピペすることも多く単純にステップ数=実績とは言えないがステップ数で工数を判断されたりする
    (ステップ数でなくそのコードを作成するにあたって調べたり考えたりする時間が重要だったりする)
  • 謎の風習に使われていたりする
    ステップ数によって予測されるバグ数がありそれに達しているか見ることがあるとか)

あくまでも一つの指標にすぎないですね。

終わり

ステップ数がわかったからなんなんだろうと思っていましたが、目安になるんですね。
過去にはソースチェックの際に残りステップ数を出したりするのに使っていました。

参考

https://blog.codinghorror.com/diseconomies-of-scale-and-lines-of-code/
https://www.qbook.jp/column/20190213_670.html