TOP設計・移行・活用> はじめに




Javaコーディング規約
Javaコーディング規約

第3回:ネーミング規約(前編)
著者: 電通国際情報サービス  高安 厚思、東田 健宏
アイエックス・ナレッジ  河野 弥恵   2005/9/7
1   2  3  次のページ
はじめに

   ネーミング規約を無視したプログラムの読み辛さにイライラした経験はありませんか?

   ネーミング規約は、プログラムを書く時には「何故こんなルールを守らなくてはいけないのか」と煩わしく思われます。しかし、ネーミング規約に違反したソースコードを読む時には「何故こんなルールも守れないのか」と、腹立たしく思うものです。

   規約にそったソースコードを書くのが煩わしいのは何故でしょうか?人によって理由は様々でしょうが、以下のような理由をあげる人が多いと思います。

  • 規約を覚えきれない
  • 規約通りに書くとソースコードが読みにくくなる
  • 規約の意味がわからないので守る気がしない

表1:規約が守れない理由

   この理由を見て、「プログラマの愚痴」と捉える人もいるかも知れません。しかし、規約そのものに問題がある場合もあります。では、以下のような規約だったらどうでしょうか?

  • シンプルで覚えやすい
  • 規約通りに書くと、確実にソースコードが読みやすくなる
  • 1つ1つの規約の存在意義がはっきりしている

表2:守りやすい規約

   こんなネーミング規約なら、守りやすいのではないでしょうか?意味がわからないルールは覚えにくい上に守る気もしないものですが、納得できるルールなら自然と頭に入り、また守りたくなるというものです。

   ネーミング規約の目指すものは、「ソースコードの可読性の向上」です。「設計書などのドキュメントに頼らず、文章のように通読して意味のわかるソースコード」が理想です。

   これらを踏まえて、今回は「納得できる=守りたくなる」ネーミング規約のあり方を考えています。

本連載で紹介する規約に関しては、規約名のみを記述しています。規約そのものは、以下のURLからダウンロードして確認してください。
http://www.objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf
全般

   ここでは、命名するときの全般的な規約について取り上げます。ここで取り上げる規約はパッケージ名、クラス名、インターフェイス名などの全体に渡って守るべき規約ですので、ネーミング規約の基本ともいえます。


英語を使え(N_GNR001)

   これは日本語のローマ字表記を避けることを意図しています。ローマ字は1文字ずつ追っていかないと意味が捉えられないのに対して、英単語はパッと見て意味を捉えることができます。また、ローマ字は長音や拗音の表記にバラつきがでやすいのも欠点です。

   しかし、英語化に異を唱える人もいます。例えば次の意見があり、英語を使うことに否定的な方も多いのではないでしょうか?

  1. 英単語はスペルが長くなることがある
  2. 似たような単語がでてきた場合、選択に苦しむ
  3. 業務用語には的確な英単語が当てはまらない場合がある

表3:英語の問題点

   1,2は大きな問題ではありません。ソースコードの可読性のためには多少長い名前になるのは仕方のないことですし、要件定義の際に単語集を作成しておけば、似たような単語で悩むことはありません。

   問題は3です。業務用語の中には特定の企業・部署内のみで通じるような微妙ないいまわしなどがあり、日本語のままでも部外者には使いわけのできない言葉がよくあります。その場合は、割り切ってローマ字を当てることも許容すべきかもしれません。但し、必要最小限にとどめておいて下さい。

1   2  3  次のページ

参考文献など
Javaコーディング規約2004は以下のサイトおよび書籍として発表しています。本連載と共に参考にしてください。

「Javaコーディング規約2004」 http://www.objectclub.jp/community/codingstandard/JavaCodingStandard2004.pdf

「オブジェクト倶楽部」
Javaコーディング規約2004は、オブジェクト倶楽部で公開して頂いております。 http://www.objectclub.jp/

「超図解 Java ルールブック」
Javaコーディング規約が「超図解 Java ルールブック」という名前で書籍になりました。規約の詳しい内容に関しては本書籍をご覧ください。
http://www.x-media.co.jp/xbook/index.cfm?ID=6


Javaコーディング規約を理解するに際しての参考サイトをご紹介します。

「Code Conventions for the Java Programming Language」 http://java.sun.com/docs/codeconv/
※日本語訳を提供しているページ
http://www.tcct.zaq.ne.jp/ayato/programming/java/codeconv_jp/


Java コーディング規約を理解するに際しての参考書籍をご紹介します。

「Java の格言」
「Java の鉄則」
「リファクタリング - プログラミングの体質改善テクニック」
「The Elements of Java Style」
「Effective Java - プログラミング言語ガイド」
「Essential Java Style」

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


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


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


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。

INDEX
第3回:ネーミング規約(前編)
はじめに
  大文字・小文字の違いで名前を区別しない(N_GNR002)
  クラス
Javaコーディング規約
第1回 良いコードとは、心得5ヶ条
第2回 コーディングレベルを上げるためには?
第3回 ネーミング規約(前編)
第4回 ネーミング規約(後編)
第5回 フォーマットに関するコーディング規約
第6回 オブジェクト指向のためのコーディング規約
第7回 変数に関するコーディング規約
第8回 文字操作・数値・日付に関するコーディング規約
第9回 継承とインスタンスに関わるコーディング規約
第10回 制御構造に関する規約
第11回 コレクション・ストリーム・例外に関するコーディング規約
第12回 スレッド・ガベージコレクションに関するコーディング規約