TOP設計・移行・活用> ローカル変数
Javaコーディング規約
Javaコーディング規約

第4回:ネーミング規約(後編)
著者: 電通国際情報サービス  高安 厚思、東田 健宏
アイエックス・ナレッジ  河野 弥恵   2005/9/15
前のページ  1  2  3
ローカル変数

   今までにも説明してきたように、名前には意味を持たせる必要がありました。しかしローカル変数の場合は、スコープが狭いことから変数を識別することが容易なため、限定的に省略した名前を使っても構いません。その場合は、省略する境界線を間違えないように気をつける必要があります。
スコープが狭い変数名は省略した名前でもよい(N_LVL001)

   本来、変数名には役割を反映した名前を用いるべきですが、スコープが狭い変数は識別が比較的容易なため、省略した名前を用いても構いません。スコープが狭いとは、行数が少なく、ネストされたブロックが含まれていないことをいいます。以下の例を見て下さい。

public static void main(String[] args){
  String str1 = “一行:”;                  //違反
  try{
    String str2 = br.readLine();     //違反ではない
    System.out.print(str1);
    System.out.println(str2);
    br.close();
  }catch(IOException e){
    e.printStackTrace();
  }
}
   "str2"は"try 〜 catch"ブロックの中で宣言され、中でも使用されています。ブロック内だけで有効な変数ですので、省略した名前で問題ありません。

   "str1"は"try"ブロックの外で宣言されています。"str1"のスコープはmainメソッド全体となりますので、省略した変数名は規約違反です。こういう場合は、意味のある名前をつけるようにして下さい。

   省略名を用いてもよい範囲の目安は、「一目で判読できる範囲」です。


for文のループカウンタは、ネストごとに"i"、"j"、"k"、…を使う(N_LVL002)

   ループカウンタに"i"、"j"、"k"を使うのは、C言語などからの習慣です。for文の中だけで有効となるループカウンタには、むしろシンプルな名前を用いた方がよいと思います。

   "i"、"j"、"k"でなく、"cnt1"、"cnt2"、"cnt3"などを使う方もいると思います。これは習慣の問題ですので、プロジェクト全体で統一する必要はありませんが、ソースコード単位では統一すべきです。


まとめ

   ここまでネーミング規約について述べてきましたが、すべての規約は、次の4つのルールに集約されます。

意味のある名前を使うこと
"a00001"のような記号や番号ではなく、役割を表す文字列を使う

名前を省略しないこと
"class" → "cls"のような省略形を使わない

1つのものに1つの名前をつけること
役割の異なるものには同じ名前をつけない

表記を統一すること
大文字や小文字の使いわけなどを統一する

表3:ネーミング規約4つのルール

   この4つのルールは、ネーミング規約を通して一貫したポリシーです。そして最終的には「ドキュメントに頼らず、文章のように通読して意味のとれるプログラム」に繋がっていきます

   今回紹介したネーミング規約は1つの例として捉えて下さい。4つの基本ルールに反していなければ、プロジェクトごとにネーミング規約を作って利用するのも問題ありません。ただし、利用しやすく、守りやすい形にしたうえで、プロジェクト内で統一するのが重要です。また、SunのCode Conventions for the Java Programming Language(http://java.sun.com/docs/codeconv/)については守るようにするのが無難です。

   前回でも書いたように、ネーミング規約の利用目的は、「ソースコードの可読性の向上」です。第1回で紹介した「コーディングの心得5ヶ条」も、その筆頭に「見やすさを重視せよ」とあります。ネーミング規約の利用による可読性の向上は、5ヶ条の目指す「良いコード」への最初の一歩です。

   その効用は他人の書いたソースコードを読む時に限りません。自分の書いたソースコードを読み返すときにも、その効果を発揮します。例えば、コーディングの過程においても、個々のクラスやメソッド、変数などの役割が明確になり、処理内容の把握が容易になるため、ケアレスミスによる無用なバグの発生を減らし、作業を円滑にすることが期待できます。

   ネーミング規約は決して「作業効率を下げるだけの煩わしい規則」ではないことがわかって頂けたかと思います。ネーミング規約を上手く利用することによって、より可読性の高い、即ち「保守性が高く」「生産性の高い」コードを書くことができます。保守性と生産性の向上のために、ネーミング規約の積極的な活用をお奨めします。

前のページ  1  2  3


株式会社電通国際情報サービス 開発技術センター 高安 厚思
著者プロフィール
株式会社電通国際情報サービス  高安 厚思
株式会社電通国際情報サービス 開発技術センター
Java(J2EE)/オブジェクト指向の研究開発やプロジェクト支援、開発コンサルティングに従事。モデル、アーキテクチャ、プロセスが探求対象。今回は Javaコーディング規約2004の仕掛け人。


株式会社電通国際情報サービス 開発技術センター 東田 健宏
著者プロフィール
株式会社電通国際情報サービス  東田 健宏
株式会社電通国際情報サービス 開発技術センター
CTI、Webアプリの開発経験を経て、現在は主にプロジェクトマネジメント支援、プロセスエンジニアリング、ソフトウェア工学研究開発に従事。最近はコーチング、ファシリテーションといったヒューマン系スキルに興味を持ち日々修得に努めている。


アイエックス・ナレッジ株式会社 河野 弥恵
著者プロフィール
アイエックス・ナレッジ株式会社  河野 弥恵
アイエックス・ナレッジ株式会社 第1事業部所属
主にCOBOL、PL/1等のシステム開発に従事。コーディングに限らず、誰もが気持ちよく守れる規約を模索中。


INDEX
第4回:ネーミング規約(後編)
  前回より
  引数
ローカル変数