プログラミング作法とコーディング基準

この記事での学習内容 ITパスポート 基本情報 応用情報

プログラミング作法とコーディング基準の目的、効果、種類を理解する。また、プログラミング作法とコーディング基準を守らない場合に起こる弊害を理解する。

用語例:字下げ(インデンテーション)、ネストの深さ、命名基準、仕様禁止命令、プログラムの機能性・効率性・使用性・保守性の向上

プログラミング

プログラミングは、コンピュータを使って実行する作業手順を、前もって作っておく作業です。プログラムとは、コンピュータ用の作業手順書を、コンピュータに分かることが出書き出したもの、といえます。

人間が何かの仕事をこなすときは、まず段取りを考えて計画を立て、それに従って実際に仕事を進めます。これと同じように、コンピュータに仕事をさせるための段取りを書いたものがプログラムであり、プログラムを作成する作業がプログラミングです。コンピュータはプログラムに従って運用を行います。

プログラミング作法とコーディング基準の目的・効果

プログラミング作法は、プログラムを読む人にとって適切であろうと、一般的に指示された流儀のことです。対して、コーディング基準とは、チームや組織が定めたプログラムの書き方の基準です。いずれもプログラムの保守性を改善することが目的であり、読む人の労力や読み間違いを減らす効果があります。

同じ処理をするプログラムであっても、書き方の流儀や個人差が発生してしまいます。例えば、C言語で「変数aに1を加算する」という処理でも、以下のように異なる書き方が可能です。

  •  a++
  •  a = a + 1

専門家の間では、前者のほうが簡潔で、読み間違いが少ないとして支持されている、というのがプログラミング作法の例です。

また、コーディング基準は以下のような事項に関して定められることが多いです。

インデンテーション文の書き出し位置のインデンテーション(字下げ)の指針。
ネスト(入れ子)データ構造や制御構造の階層状態。ネストの深さを規制。
命名基準変数やモジュールの名前の付け方の指針。
使用禁止命令使用を推奨しない命令。(Goto文の禁止など)

インデンテーション

インデンテーション(字下げ)とは、プログラムの文の書き出し位置を、何文字分か右の方へ下げることです。これは、一般的なビジネス文書でも当てはまる事柄で、文章を読む時の人間の視線が左から右、上から下と流れることを踏まえたものです。

プログラムのインデンテーションは、例えば次のようにします。

  1. データ構造のネストを字下げで表す。
  2. 反復や選択などの制御構造のネストを字下げで表す。
  3. ラベルよりそれ以外の部分を字下げする。
  4. 字下げは半角文字4文字分ずつとする。
インデンテーションの例

label1:
    i=0;
    repeat
        a=b+c;
        ~~

このような字下げは、処理には関係ない表現なので、人間にとっての読みやすさを目的として、コーディング基準で規定するのが一般的です。

ネスト

データ構造や制御構造の階層状態をネスト(入れ子)といいます。ネストが深すぎると人間は把握することが難しくなります。

例えば、コーディング基準でネストの深さを4までに規制します。それを越えようとする場合は、一部を他のモジュール呼び出しや関数参照にしてネストが深くなるのを回避します。

命名基準

命名基準とは、変数、モジュール、関数、ラベルなどの名前の付け方の指針です。以下に、命名基準の例を示します。

  1. 元になっている業務や学術の用語と一致する名前を用いる。
  2. 配列の索引には、i,j,kを用いる。
  3. カウンタにはn,mを用いる。
  4. 長さを表す変数には、l,mを用いる。
  5. ポインタ変数には、p,qを用いる。
  6. 合計には、sを用いる。
  7. 一時的な変数には、t,wを用いる。

使用禁止命令

使用禁止命令とは、仕様が推奨されていない命令や文のことです。

例えば、goto文を禁止して、代わりに反復や選択の文で代替するほうが、読み手には読みやすくなります。