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




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

第1回:良いコードとは、心得5ヶ条
著者: 電通国際情報サービス  高安 厚思、東田 健宏
エー・ピー・アイ  森田 健    2005/8/9
1   2  3  次のページ
はじめに

   皆さんはコーディングがお好きですか?

   プログラミングが好きでソフトウェア業界に入りプログラマになったのは良いものの、ソフトウェアやシステムを新規に設計して開発するのは稀で、現実には他人の書いたソースコードを触ることが多くはないでしょうか?

   そして、いざ引き継いだソースコードを見て愕然としたことはないですか?例えば、以下のようなことに遭遇しませんでしたか?

  • クラス名/メソッド名(do1、do2)/インスタンス変数名(a、w、t)の意味が分からない
  • 同じような事が何度も書かれている
  • メソッドの長さが1000ステップを越えている
  • mainメソッドしか存在しない

表1:驚くべきソースコード

   プログラマは、受け取ったソースコードを見て処理内容を推測します。手がかりは、プログラムの構成やメソッド名、変数名などです。

   もし仕様書があれば、ソースコードを読み解くために利用できますが、仕様書とソースコードの内容があまりにも異なる時は、プログラムの方を正しいものとします。

   そうやって、読み解こうとしたソースコードが複雑な場合、ソースコードに書かれた変数名やメソッド名の意味が分からない場合、メソッドの長さがある閾値を越えてしまう場合はそのソースコードを引き継いでメンテナンスするよりも、新しく書き直すことを選択してしまいます。

   因みに、変数名やメソッド名を解りにくくすることは、難読化(Obfuscation)や曖昧化(Obfuscator)といいます。これらはソフトウェアプロテクションという分野として盛んに研究が行われています。世の中には難読化/曖昧化のための解析ツールもあります。

   相手が理解しやすいように、良いソースコードを書くためには、どのようにすればよいのでしょうか?それは、次にあげる「コーディングの心得」を守ることです。


コーディングの心得

   プログラミングを上達させるためにもこのコーディングの心得は把握しておいてください。後で説明する箇所でも、もう一度宣言します。

  • 見やすさを重視せよ
  • ネーミングは分かりやすく
  • サンプルを鵜呑みにしない
  • 同じコードを二度書かない
  • 役割は一つに

表2:コーディングの心得5ヶ条

   私がプロジェクトでプログラミングする場合は、メンバーとこの5ヶ条を毎朝唱えてから仕事をスタートしようというような冗談が通じるような体制で、プロジェクトを進めています。


良いコードとは何か

   コーディング規約を利用する目的は、ソースコードの品質をあげることだと思います。品質の基準を明確にしないで良い、悪いと話してもしかたありません。そこで、本連載の第1回目では、「良いコードとは」というテーマで話を進めていきたいと思います。そして、そのことが最終的に「心得5ヶ条」につながっていきます。

   ここでは、「良いコードとは」どういったものなのかを考え、ソースコードを交えながら、悪い点を説明していきます。

   では、良いコードとはどういったものでしょうか?良いコードだと思われる内容を表3に箇条書きで表します。

  • 読みやすい
  • 適切なコメント
  • 速い、見た目がよい
  • 修正個所がすぐに分かる
  • 機能の追加・削除が楽
  • バグが無い
  • セキュリティが考慮されている
  • 仕様を満たしている
  • 落ちない
  • 自分だけがメンテできる(仕事に困らない)

表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アプリの開発経験を経て、現在は主にプロジェクトマネジメント支援、プロセスエンジニアリング、ソフトウェア工学研究開発に従事。最近はコーチング、ファシリテーションといったヒューマン系スキルに興味を持ち日々修得に努めている。


株式会社 エー・ピー・アイ 森田 健
著者プロフィール
株式会社 エー・ピー・アイ  森田 健
コードが単純になるには?見やすいコードを書くには?を日々模索しています。「コードがドキュメントだ」が、口癖な他称人間コンパイラ。


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

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