コーディングルールやテクニック

システム開発の最終成果物はソースコードです。
日本ではコーディングレベルの作業に対して、
あまり重きをおかない風潮も多いですが、
実際には重要な要素を多く含んでいます。(生産性、品質など)


コーディングスタイル(ルール)

昔からコーディングスタイルはいろいろな形式が提唱されています。
プロジェクトによっては厳密なコーディングルールが定められる場合もあります。

主なコーディングスタイル(ルール)には以下の様なものがあります。
・ネーミング(変数、関数、クラス、ファイルなど)
・インデント(字下げ、タブか空白か、2文字・4文字・8文字)
・コメント記述方法
・空白を入れる位置、{}の書き方

コーディングスタイルはプログラマーの好みによっても違ってきます。
他人のスタイルを尊重しながら、自分のスタイルも大切にしましょう。

コーディングスタイルの例
※古典的な書物が多いですが、それだけ本質的なことが書かれています。
スタイル特徴
プログラミング言語C
現代プログラミングの潮流の源流ともいえる
カーニハンによるC言語についてのスタイル(サンプルコード)が書かれています。
プログラミングを職業とする人は一度読んで置くと良いと思います。
プログラミング作法
同じくカーニハンによる、プログラミングからデバッグまで、実践的なテクニックが書かれています。
プログラミング書法
日本語タイトルが作法と書法で紛らわしいですが、こちらも名著です。
プログラムの構造や性能について書かれています。
ハンガリアン記法
マイクロソフトのオフィスソフトを開発した、
ハンガリー出身のチャールズ・シモニーが提唱したスタイル。
変数名にデータ型の接頭詞をつけ、
頭文字を大文字にしたワードを組み合わせたネーミングルールに特徴があります。

if文

if文の書き方がソースコードの読みやすさを左右する大きな要素の1つです。
if文のネストはあまり深くしないように(出来るだけ2レベルまでに)しましょう。
読みにくい例
if (1 == $a) {
  if (2 == $b) {
    if (3 == $c) {
       print "123<br>\n";
    } elseif (4 == $c) {
       print "124<br>\n";
    }
  } elseif (3 == $b) {
    xxx
  }
}

読みやすい例
if (1 == $a && 2 == $b && 3 == $c) {
  print "123<br>\n";
} elseif (1 == $a && 2 == $b && 4 == $c) {
  print "124<br>\n";
} elseif (1 == $a && 3 == $b) {
  xxx
}
決まったルールがいつも最適とは限りません。
実際のプログラミングでは、読みやすさ、効率の良さ、メンテナンスのしやすさ、
などを考慮して、ケースバイケースで使い分けましょう。

if文で左辺に定数を書くというのもテクニックの1つです。
プログラミング言語によっては比較演算子が=(VBなど)であったり、
==(C, PHPなど)であったりします。
後者の場合は、間違えて=を使ってしまった場合、
左辺が変数だとエラーにならずに、間違った処理になっていまいます。
左辺を定数にしておけば、エラーになって、間違いを防ぐことができます。
最初は慣れないかも知れませんが、慣れると便利な表記方法です。
正常
if ($a == 1) print "aは1です。<br>\n";
間違い
if ($a = 1) print "aは1です。<br>\n";
※aに何が入っていても成立してしまいます。
推奨
if (1 == $a) print "aは1です。<br>\n";
エラー
if (1 = $a) print "aは1です。<br>\n";
※文法エラーになって、コーディングミスによるバグを防げます。

パターン化

プログラムの共通化は生産性と品質を向上させる有効な手段です。
関数、クラス、インクルードなど、共通化を実現する機能もいろいろあります。

しかし、共通化にも限界はあります。
技術的に共通化が難しい、あるいは無理に共通化しないほうがわかりやすい、
といったケースも少なくありません。
だからプログラマの仕事が必要であるともいえます。(プログラミングを全自動化できない)

そんな時にはパターン化を意識したプログラミングが効果的です。
出来るだけ同じパターンを再利用するコーディングを心がけましょう。
例えば100行のソースコードがあったとしたら、
70行はパターン化されたコーディングで、
既にテスト実行の実績があるソースからコピペして
流用できるようにするのがコツです。
そのためには変数名の付け方や、
定型化された処理ロジックの組み合わせなどを意識して
プログラミングしましょう。

コード生成

業務アプリケーションなどでは、
データ項目の数だけ同じようなコードを書く必要が良くでてきます。
ソースをコピペして、変数名を置き換えるだけの、黙々とした単純作業ですが、
スペルミスをしたり、コピペ操作を誤ったり、
なにより単純で疲れる作業です。

そんなときは身近なツールでコードを自動生成しましょう。
データ項目一覧作成しておき、それをエディタにコピーして、
キーボードマクロを使うと、それぞれのデータ項目に対する
同様なコーディングがあっという間に出来てしまいます。
キーボードマクロについてはここでは説明しにくいので。
Googleなどで検索してください。

あるいは、EXCELを使うという方法もあります。
データ項目をセルにコピーして、文字列連結などを利用して
ソースコードを生成します。
EXCELソースコード生成サンプル

できるだけ工夫をしながら、プログラミングを楽しく速く正確に
出来ることを目指しましょう。