C/C++ ポインタ入門 > トークン数
Nobuhide Tsuda
Dec-2013
演習問題の弊害
- テストコードをパスすることだけを考えてコーディング・デバッグする人が多い。
- そのような人のコードはテストに失敗する場合毎になんとかテストをすり抜けるコードを追加していくので、
コードが肥大化していく傾向にある。
- そのようにして出来たコードは、テストにはパスするものの、冗長で理解しづらく文書性・メンテナンス性に乏しく、
たいていパフォーマンスも悪い
- 通常は、行数、文字数が少ないほど、簡潔でよいコードなのだが、
改行を単に削除したり、短い変数名を用いるなどすると、返って文書性を損なうことになる。
- テストにパスしたコードが好ましいかどうかを判定する基準が必要である。
トークン数
- そこで、ソースコードのトークン数によりソースコードを計量することを提案する。
- トークン数は以下のように定義する
- 識別子は1トークンと数える
- 変数名はできるだけ分かりやすいものにすべきなので、文字数に依らず1トークンとする
- int a; // トークン数:3
- int length; // トークン数:3
- 演算子(%, ++, ==, &=, <<= 等)は1トークンと数える
- ++ptr // トークン数:2
- a += 1 // トークン数:3
- a >= 1 // トークン数:3
- b ? 1 : 2 // トークン数:5
- 文字列リテラル、文字リテラルは1トークンと数える
- a = "hoge"; // トークン数:4
- ch = '\0'; // トークン数:4
- { } はトークンとして数えない
- if( 1 ) a = 1; // トークン数:8
- if( 1 ) { a = 1; } // トークン数:8
- 空白類、改行はトークンとして数えない
- 行、ブロックコメント内の文字はトークンとして数えない
- その他の文字はトークン数1としてカウントする
トークン数カウントツール
- 「さくさくエディタ」 version 0.3.062 にトークン数カウント機能を追加した。
- カウントしたい範囲を選択し、ツール>トークン数カウント メニューを選ぶと、アウトプットにトークン数が表示される