コーディングの習慣
1. JDKのバージョン
- Java2(JDK1.2.0)以降に共通する機能を使ってよいことにする。
- JDK1.3.0を開発やテストに使う標準的な環境とするが、異なる環境を使ってもよい。
使用するクラスライブラリは、原則として以下のパッケージに限る。
- java.lang
- java.lang.reflect
- java.io
- java.util
- java.math
2. ビルド方法
.classファイルが何もない状態からは、
javac ドライバ.java
とすると、必要なファイルが全てコンパイルされる。更新されたファイルだけコンパイルするには、JDK1.2では、
javac -Xdepend ドライバ.java
JDK1.3では、
oldjavac -Xdepend ドライバ.java
とする。
3. パッケージの分割
- Coinsプロジェクトのコードは、coinsの下に置く
- コアとパスのための階層は作らず、coinsの直下に置く
- コアやパスの下のパッケージ分けは自由
4. 例外やexitの呼び出し
- java.lang.RuntimeExceptionのサブクラスは使わない
- コンパイル全体を中断するものは、java.lang.Errorのサブクラス(throws節に書かなくてよい)
- パスの中でcatchして使うものは、java.lang.Exceptionのサブクラス(throws節に書く)
- エラーについては議論継続中(入力プログラムのエラーと、パスのプログラムのエラーの区別)。
- System.exit()の直接呼出しはしない
5. シンボル命名規則
- 全般
- シンボルは、できるかぎりその意味を的確に表す名前にするが、ローカル変数については短い名前を使ってもよい
- 同類のシンボルには、同じプレフィックスをつけたり、綴りの一部を同じにして意味がわかりやすいようにする
- すべて大文字のシンボルで、複数の単語をつなげるときには、'_'で区切る。
- それ以外のシンボルでは、2番目以降の単語の始まりを大文字とする(単語がHIRのような略語の場合でもHirとする)。
- 個別
- パッケージ名は小文字で始める
- クラス名、インターフェース名は大文字で始める
- static finalのフィールドはすべて大文字とする(static フィールドはfinalが望ましい)
- publicでもstaticでもないフィールドはfで始める
- それ以外のフィールドは小文字で始める
- メソッド名は小文字で始める
- 仮引数(parameter)はpで始める
- ローカル変数(短くないもの)はlで始める
6. 略語
出現頻度の高い単語には略語を決めておき、原則として略語のほうを使うようにする。この略語の表は、適宜追加修正される。
単語の短縮
arg: argument
const: constant
conv: convert
dec: decrement
def: definition
env: enviroment
exp: expression
gen: generate
inc: increment
inst: instruction
opt: optimize
pred: predecessor
reg: register
stmt: statement
succ: successor
tmp: temporary
tst: test
var: variable
頭文字
bop: Basic OPeration
hir: High-level Intermediate Representation
lir: Low-level Intermediate Representation
7. コメントの言語・文字コード
ソース中のコメントは、日本語でも英語でもよい。日本語の場合には、Shift JISコードとする。なお、ドキュメントは原則として日本語とする。
8. 改行コード、TAB幅(Javaソース)
- 一つのアーカイブの中では、改行コードは統一する。
CR+LFに統一するか、LFに統一するかは自由とする。
- インデントにTABを使わないことを原則とする(TABを使うと環境によって見かけが変わってしまうため)。
9. 改行コード(入出力)
- 改行を出力するときはjava.io.PrintWriter#println()などを使う
- 改行を文字列に含めたいときには、System.getProperty("line.separator")を使う