[Object-Oriented & Java]
Writing Robust Java Code
Writing Robust Java Codeは、Scott W. Ambler氏によるJavaコーディング標準と指針が記述された文書です。この文書は、理解しやすく保守しやすく拡張しやすいコードを書くことを目的としています。一般的な標準だけでなく、コーディングにおける指針が豊富に書かれています。
バージョン番号の17.01dは、スタートレックに登場するエンタープライズ号の艦籍番号にちなんで付けられているらしい(著者はスタートレックファン)。
日本語訳公開版(v17.01d)
Writing Robust Java Codeのバージョン17.01dを日本語訳したものを著者のScott
W.Ambler氏の承諾を得て公開しています。
オリジナル(v17.01d)
Writing Robust Java Codeのオリジナルは下記URLにあります。
古い版(v17.01c)の日本語訳
一応取ってありますが、新しいv17.01dの方をご覧下さい。
参考URL
他のJavaコーディング標準
*1 SunのCode Conventionはあまり積極的に保守されたり使われてはいない、とJosh Bloch氏が述べていた。
developerWorks:Components日本語記事
IBMのdeveloperWorksサイトに、Scott W. Ambler氏の記事(日本語訳)がいくつか掲載されています。Writing
Robust Java Codeに書かれた標準や指針についての詳しい解説、補足として読むことができます。
Ambler氏の記事以外にもコーディング標準に参考となる記事が多々掲載されています。
コーディングスタイルに関するページ
コーディング標準に関するツール
書式整形
静的検証
- Jlint
Java言語のバイトコードおよびソースコードを解析し、コンパイラでは検査していない問題点を指摘するツール。
- lint4j
Javaソースコードを解析し、排他・スレッド問題、性能・スケーラビリティ問題、シリアライズ、データフロー等の問題を指摘するツール。
- CheckStyle
コーディング標準に従っているかをチェックすることができます。チェック対象は、Javadocコメント有無、変数名、メソッド名、クラス名、ファイル先頭ヘッダ、import文、行の桁数、メソッド行数、ファイル行数、パラメータ数、タブ有無、空白、行折り返し、修飾子の順序、冗長、可視性、{}の強制、空ブロック、{}の位置、などです。
Checkstyleホームページの日本語翻訳ページ
- JCSC
コーディング規約への整合性チェックとメトリクス計測を行うツール。
- Hammurapi
120のルールに従ってソースコードを検証するツール。
- FindBugs
Java言語のバイトコードを解析し、バグパターンリストと照合して潜在的な問題点を指摘するツール。ルールの一例は、equalsメソッドと
hashCodeメソッドが整合性を持ってオーバーライドされているか、メソッドの戻り値が無視されているか、null参照呼び出しを引き起こす可能性が
あるか、初期化前にフィールドを読み出すか、など。一覧はFindBugsのサイトに掲載されています。
- PMD
ソースコードの静的解析ツール。未使用のローカル変数/引数、空のcatch文/if文、重複したimport文、シングルトンにすべきクラス、短すぎ/長すぎる命名などを調査する。Eclipseをはじめ各種開発ツールへのプラグインが充実している。
メトリクス計測
参考文献
- "The Elements of Java Style", Allan Vermeulen, Scott W. Ambler,
Greg Bumgardner, Eldon Metz, Trevor Misfeldt,
Jim Shur, Patrick Thompson著, Cambridge University
Press, 2000
- 「コードコンプリート」、Steve McConnel著、石川勝訳、アスキー出版局、1994
- 「Javaコーディング標準徹底理解 −その意義、作成法、適用に際してのポイントを学ぶ」、高橋徹、JavaWorld誌2003年7月号記事およびJavaWorld
for Beginners(ムック)記事、IDG
拙著の記事です。
- 「超図解 Javaルールブック」、電通国際情報サービス著、エクスメディア刊、2004 (出版社倒産により入手難)
- 「クリーンコード」、Robert C.Martin、
- 「実装パターン」、Kent Beck
This page is written by Toru TAKAHASHI.