●今回は以下のJavaコーディング標準より「3.ガイドライン」について
http://objectclub.jp/community/codingstandard/CodingStd.pdf
●プログラムの基本型
---------------------------------------------------
/*
* COPYRIGHT(著作権情報)
*/
package パッケージ名;
import パッケージ名;
/**
* クラスの説明
*/
public class クラス名{
/**
* 変数の説明
*/
private 型名 変数名;
/**
* 関数の説明
* @author 書いた人(これは必ず入れる)
* @see 関連項目
* @param 引数
* @return 返り値
*/
public void 関数名(引数) {
if (条件) {
} else {
}
}
}
---------------------------------------------------
●その他ルール
①1行は80文字まで
②クラスの「extends」「implements」
public class クラス名
extends 継承クラス名
implements インタフェース名
③メソッドの改行
private setA(double a,double b,
double c,double d);
④「import」に「*」はなるべく使用しない(3つ以上の場合はOK)
⑤メソッドは1つのことを行うようにする
⑥引数のタイプによるメソッドのオーバーロードはなるべく避ける
駄目な例:draw(Line); draw(Rectangle);
⑦Object.equals()メソッドをオーバーライドするとき
コンテナクラス(Hashtable)に対応するため、
hashCodeもオーバーライドする(逆も同じ)。
⑧Objectのcloneを使用するとき、「cloneable」で明示(深いコピー)
理由:浅いコピー(sliceやconcat)ではコピー元を変えてしまう場合がある
⑨できる限りデフォルトコンストラクタを作成
Class.newInstance()でインスタンスの作成ができる
※デフォルトコンストラクタ
引数なしのコンストラクタ
⑩同値比較はequals()を使用する
理由:ユニットテスト時にassertEqualsを使用できて楽
⑪ローカル変数は宣言時に初期化・再利用はしない
例:for(int i=0;i<10;i++){}
for(int i=0;i<20;i++){}
⑫条件文の条件には「=」を使わない
バグが発生しやすい??
⑬「<」「<=」を使う
右側が大きいほうと統一しておく
⑭キャストはできる限りinstanceofの条件文で囲む
例
C cx = null;
if(x instanceof C){
cx = (C)x; //キャスト
}else{
//インスタンスができない場合の処理
}
⑮JDKの標準の例外クラスを使う
積極的に利用したい例外クラスたち
→IOException
なんらかの入出力例外の発生を通知するシグナルを発生
→NoSuchFileExpection
ファイルがないときの例外スロー
→IllegalArgumentExpection
不正な引数、または不適切な引数をメソッドに渡したことを示すためにスロー
⑯メソッドの引数は変更しない
理由:突然値が変更されることになるため
⑰toString()メソッドはできる限り実装する
理由:テストをするときに表示できる
⑱「switch」「if/else」を繰り返さない
繰り返すと同じプログラムを書くことが多くなる
FactoryMethod・Prototypeパターン・NullObjectパターンを考える
※FactoryMethodパターン
http://www.techscore.com/tech/DesignPattern/FactoryMethod.html/
※Prototypeパターン
http://www.techscore.com/tech/DesignPattern/Prototype.html/
※NullObjectパターン
http://www.hyuki.com/dp/dpinfo.html#NullObject
⑲Stringと基本型の変換
String s = String.valueOf(i);
int i = Integer.parseInt(s)
[0回]
PR