第39回
プログラミングの周辺事項(2)~きれいでわかりやすいソースとは?

1.1行の長さを適度にする

1行が長すぎると、読み解くのに手間がかかるだけではなく、エディタのウィンドウ幅(通常は80桁以内)を超えてしまうため改行されて次の行に続き、非常に読み取りにくくなります。

論理的な1行と見た目の1行

Cでは1つの処理を「;」記号で区切るため、複数の処理を1行(改行まで)で記述しても問題はありません。たとえば、以下のような書き方をしてもコンパイルエラーとはなりません。

int main(int argc, char ** argv)
{
  int i, ans; ans = 0; argv++; for (i=1; i<argc; i++) { ans += atoi(*argv++);}
  printf("addall = %d¥n", ans); return (0);
}
 

しかし、これでは変数の宣言や変数に初期値を代入する処理などが横一列に並んでしまうため、「何をしているのか?」が非常に見通しにくくなります ※1

論理的には問題がなくても、感覚的に「嫌な感じ」になる訳です。

インタプリタ型のBASIC(VisualではないCUIのBASIC)言語では、処理速度の向上を図る目的で1行に複数の処理を詰め込むスタイルが一般化していました。しかしこれもコンピュータの処理能力が低かった時代の名残です

「;」の区切りを1行の区切りに

Cでは、一定の意味を成して完結する1つの処理(「;」で終わる処理)を1行で記述する書き方が基本です。したがって、上のコードは以下のようにする方が自然であり、見た目にも意味の切れ目がわかりやすくなります。

int main(int argc, char ** argv)
{
  int i, ans;

  ans = 0;
  argv++;
  for (i=1; i<argc; i++) {
    ans += atoi(*argv++);
  }

  printf("addall = %d¥n", ans);
  return (0);
}

これは言語の規則ではなく、わかりやすく記述するための慣例です。中には、最初は先に掲げたような改行のない書き方でソースを記述し、ある程度できあがってきたら(たとえばコンパイルが成功したら)「;」以降に改行を挿入してソースを整える……といった手段をとる人もいます(あまりお奨めはできません)。