コードの書き方にはルールがある!コーディングの重要ポイント3選
プログラミングにおける目的は、「プログラム(システム)を作ること」だと考えている方も多いですよね。
それは間違いではありませんが、実は開発業務において成果物の次に優先されるものがあります。
それが「コード」の品質です。
Googleなど、大手IT企業をはじめ、様々な企業ではコードレビューという取り組みが行われており、コードの品質を高める動きが見られています。
今回は、そんなコードの書き方(コーディング)について、レビューでも指摘されやすい重要なポイントを3つまとめていきます。
やり方やルールは言語によって違う
この記事ではコーディングに関して解説をしていきますが、前提として知っておいてほしいのが「言語や技術によってコーディング規則・ルールが異なる」という点です。
コーディングの規則やルールが定められているものとして、代表的なJavaやC#などのプログラミング言語をはじめ、HTMLなどのマークアップ言語やスタイルシートなど、幅広く存在します。
しかし、当然ながら各言語によって記法が大きく異なる場合もあり、全ての言語に一概にコーディング規則を設けるのは困難です。
ここでは基本的に「プログラミング言語を扱う場合」を想定して解説していきますが、それが絶対ではないので、注意してください。
1.コメントアウトを効果的に活用する
コーディングにおいて、意外にも重要視されやすいのが”コメントアウト”です。
コメントアウトは、以下のように機能しない文字列を挿入することで、コード内で文章としてプログラムのロジックや注意事項などを残すことができます。
// スコア用の変数(変数名変更NG)
let score = 100;
// スコアを変更する関数
function changeScore(point){
// point...得たポイント
/* スコアの値にポイントを加算する
(減算の場合は負数を足す) */
score += point;
// 加算後の合計値を返す
return score;
}
このようにして、プログラムの内容を示し、自分ではない第三者が見ても理解できる内容に落とし込むためのものがコメントアウトです。
コメントアウトをしっかり活用できているコードは高品質なものだと言えますし、コメントアウトがほとんど書かれていない、自分よがりなコードは、コードレビューで指摘される可能性が高いでしょう。
特にSESの多い現場である等、複数の人間が同じコードを触る可能性のある場合には、意識してコメントアウトを書くようにするのが基本です。
わかりきった内容はコメントしない
コメントアウトはプログラムの内容を伝えるために必要なものですが、かと言ってコード1行ごとに内容を記載するような、矢鱈に扱うものでもありません。
例えば、先に書いたコードの場合、「スコアの値にポイントを足す」や「合計値を返す」というのは、コードを見れば一目でわかる話です。
例に出しておいて言うのも変かもしれませんが、あれはわかりきった内容を事細かに記している点で、悪いコメントアウトの例だと言えます。
コメントアウトは注意事項や伝達事項を次の担当者に伝える意図も含むため、コメントが多すぎると必要な情報が判別しにくい状態になってしまいます。
例の場合は、変数scoreの「変数名変更NG」という注意書きが、あまり目立たない状態になってしまっていますよね。
下のように、記述するコメントアウトはできる限り絞っておくと、伝えたい情報に目が行きやすいのではないでしょうか。
/* スコア用の変数(変数名変更NG)*/
let score = 100;
function changeScore(point){
// point...得たポイント
score += point;
return score;
}
はっきり言って、丁寧にコメントアウトを書いていっても、矢鱈に書かれたコメントは邪魔なので、あくまで必要最低限の情報のみ記載するよう努めるのを忘れないようにしてください。
2.わかりやすい記述を用いる
プログラミング言語において、よくif文などの構文を書くケースがありますが、そういった構文の書き方でも、コードの品質は左右されます。
以下のコードをご覧ください。
// 処理開始
let logined, yesChecker, msg, yesMsg, noMsg, needsLogin;
yesMsg = "回答ありがとうございました。";
noMsg = "残念です。";
needsLogin = "情報を登録するためにはログインが必要です。" ;
// yesCheckerはユーザの入力値(はい or いいえの選択)を入れる
// (現在はテスト用に仮で値代入)
yesChecker = true;
logined = true;
msg = yesChecker ? logined ? yesMsg : needsLogin : noMsg;
// メッセージを出力
// (処理終了)
alert(msg);
上記のコードは、ユーザにYes or Noのアンケートをとり、その回答に応じてメッセージを表示するだけのコードです。
ただそれだけの処理なのに、何だか複雑そうな処理に見える、と感じた方もいるのではないでしょうか。
わかりづらさの要因は多々ありますが、特に注意すべきなのがこの2文です。
// 処理開始
// ①
let logined, yesChecker, msg, yesMsg, noMsg, needsLogin;
/* 中略 */
// ②
msg = yesChecker ? logined ? yesMsg : needsLogin : noMsg;
上記のコードでやっていることは、
- 変数の宣言
- 条件分岐によって処理を分けている
というだけ。
要するに、以下のコードと実行結果は同じです。
// ①
let logined;
// (中略)
let needsLogin;
// ②
if(yesChecker == true){
if(logined == true){
msg = yesMsg;
}else{
msg = needsLogin;
}
}else{
msg = noMsg;
}
見やすくなったかどうかはさておき、処理の内容がよりわかりやすくなったと思います。
例のコードでは変数の一括宣言と三項演算子などを用い、コードの簡略化を行っていました。
確かに行数は前のコードの方が少ないですが、三項演算子を知らない方の場合、あれがif文だと気付くのに時間がかかってしまいます。
また、コードを改修する場合も、後任者の知識不足でコードを誤った内容に変えてしまい、バグが発生するかもしれません。
コメントアウトである程度肉付けはできますが、コメントはあくまで必要最低限に抑えるのが鉄則なので、わざわざショートハンドを使わずに書ける場合は使わずに、初心者でもわかるコードで作っていくのがポイントです。
逆にショートハンドなどの勉強がしたいという方は、以下に様々なテクニックを載せているので、良ければ読んでみてください。
3.命名規則を必ず確認する
コードの可読性を担保する際、重要になる要素の一つが命名規則です。
命名規則とは、変数名や関数名、クラス名など、独自に定義したデータの名前すべてに適用される記述のルールのことを言います。
これは組織や個人の匙加減で内容が左右されるものの、基本的には以下のように形式分けされることが多いです。

命名規則が乱れている場合、どれだけシンプルにコードをまとめていたとしても、整合性のないコードに見えてしまうので、特に共同開発などをする際には命名規則の遵守が必要不可欠と言えます。
また、変数名などを決める場合、aやb等、ローマ字一文字で命名するのは避けましょう。
不要なコメントアウトを残さないためにも、データ名を見ればデータの中身がわかるように命名するのがポイントです。
まとめ
綺麗なコードを書く際には、
- コメントを効果的に活用
- 初心者でもわかる書き方
- 命名規則を遵守
という3点が基本中の基本になります。
開発現場によってコーディングのルールには細かな違いも見られますが、あくまで上記の3点について留意していることを前提にするケースも多いため、初心者の方は普段の勉強中にも気を付けながらコードを書いてみるのが良いでしょう。