第78回 ソースコードリーディングのコツ

さて、プロジェクトに配属されたら、
すでにできあがっているソースを読まなければならないだろう。


そこで今回は、ソースコードリーディングのコツをひとつ紹介したい。

変数に着目せよ

 1:  my $c = 10;
 2:
 3:  ##############
 4:  # 何か処理
 5:  ##############
 6:
 7:  my $d = $c * 2;
 8:  ##############
 9:  # 以後の処理
10:  ##############

今、このソースを上から順に下に読んでいたとして、1行目で$cが10であることがわかる。
つぎに7行目を読む事になるのだが、7行目に発想すべきことを説明しよう。
7行目では、$dに代入が行われている。
$dに代入が行われているので、「7行目以降は$cをもう使わないのではないか?」
と考えるごとができる。よって代入を見た瞬間、着目する変数を$cから$dに変えるのである。
なお、$cは

my $e = $c + 10;

と実はまだその後でも使われるかもしれないことは頭のスミにはおいておいた方が良いだろう。



ココで標語的にまとめると、


「代入を見たら、着目する変数を、左辺にかえる」


と言うことができる。


※ 個人的には、$c を後でつかわないなら $dなど用いず $c = $c * 2 と本当はしてほしいところ。


ソースの途中から気になる変数の正体を知りたい

こんどは、ソースの途中から読み始めることを考える。

 1:  my $c = 10;
 2:
 3:  ##############
 4:  # 何か処理
 5:  ##############
 6:
 7:  my $d = $c * 2;
 8:  ##############
 9:  # 以後の処理
10:  ##############
11:
12:  my $x = $d % 3;

今回は、12行目の $xがどういうものか知りたいとする。
12行目からは「$xは$dを3で割った余り」ということがわかる。
となると次は、$dは何なのかということが知りたくなる。
で、ソースを上にたどって7行目で $cを2倍したものであるとわかる。
で、さらに、$cが何なのかということが知りたくなり、1行目で $c は10であるとわかる。


結局これは、さきほどの


「代入を見たら、着目する変数を、左辺にかえる」


の全く逆方向の作業である。

さっきは、上から下に読む方法で、今回は、下から上に読む方法である。
下から上に読むコツは、


「代入を見たら、着目する変数の右辺に注目する」


と言える。