忍者ブログ

てんねんのSE備忘録

てんねんのためのSE備忘録 間違い指摘いただけると助かります また、拍手なんかしていただけると喜びます

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

java:Javaコーディング標準:ガイドライン

●今回は以下の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

java:Objectクラス

●Objectクラスとは…
全てのクラスのルートとなるクラス

●代表的メソッド
①clone()
オブジェクトのコピーを作成し、返す(Object)

②equals(Object obj)
等価のオブジェクトがあるかの判定を返す(boolean)

③finalize()
デストラクタ

④getClass()
Objectの実行時クラスを返す(Class)

⑤hashCode()
オブジェクトのハッシュコード値を返す(int)

⑥toString()
オブジェクトの文字列表現を返す(String)

拍手[0回]

全般:言葉の対称性

●言葉の対称性を覚える意味
対称を覚えていれば、
逆のメソッド名や変数名の命名時に困りにくくなります

●対称性リスト
add/remove
insert/delete
get/set
start/stop
begin/end
send/receive
first/last
get/release
put/get
up/down
show/hide
source/target
open/close
source/destination
lock/unlock
old/new
next/previous

拍手[0回]

java:Javaコーディング標準:命名規則

●今回は以下のJavaコーディング標準より「3.命名規則」について
http://objectclub.jp/community/codingstandard/CodingStd.pdf

●命名規則とは…
各パッケージ名やクラス名などの名前の付け方

●パッケージ名
「.」で区切られる

●ファイル名
public クラス名のとき、クラス名.javaとなる

●クラス名
先頭大文字・区切りを大文字
例:public AddValueToIt{}

●例外クラス名
最後にException
例:public AddValueException{}

●インターフェイス名
基本はクラスと同じで、先頭大文字・区切りを大文字
→クラスと区別したい場合:先頭に「I」を付ける
例:IAddValue
→クラスにある能力を加える場合:最後に「able」を付ける
例:Serializable

●実装クラス名(interfaceをimplementsしたクラスの名前)
最後に「Impl」を付ける
例:public AddValueImpl{}

●抽象クラス名
先頭に「Abstract」を付ける
例:public AbstractAddValue{}

●定数(static final)
大文字・「_」で区切る
例:ADD_VALUE_POINT

●メソッド名
先頭小文字・区切りを大文字
例:addValue(int it);

●新しいオブジェクトを作る時のメソッド名
型名 create型名();
型名 new型名();

●オブジェクトを変換する時のメソッド名
変換後型名 to変換後クラス名();

●属性(プロパティ)を取得する時のメソッド名
取得する属性名 get取得する属性名();
boolean isEnabled();  //アクションが使用可能かを返す

※それぞれJavaBeansで使用可能

●属性(プロパティ)を設定する時のメソッド名
void set設定する属性名(設定する属性の型名 設定する値);

●booleanを返すメソッド名
①is+形容詞();
例:isEmpty();  //JavaBeansで使用可能

②can+動詞();
例:canGet();

③has+過去分詞();
例:hasChanged

④三単元動詞();
例:contains(Object o); //oがあるか

⑤三単元動詞+名詞();
例:containsKey(Key k); //kがあるか

●boolean変数名
上記の「booleanを返すメソッド名」と「形容詞」
「形容詞の例」:boolean dirty

●ループカウンタの変数名
スコープが狭い順にi,j,k...と続ける
例:for(j=0;j<10;j++){
        for(i=0;i<20;i++){
            //処理
        }
    }

●スコープが狭い変数の名前
型名を略す
例:AddValueClass avc = new AddValueClass();

●意味が取れる名前を好んで使用する

copy(from,to); //fromをtoにコピー
copy(src,dst); //srcをdstにコピー

●考え直したほうが良い変数名
info
data
temp
str
buf

●ローカル変数の名前(やらないところあり)
_+小文字
例:_variable

●ハンガリー記法(やらないところあり)
先頭に型の頭文字を小文字で入れる
例:String stName = new String();

●private/protected変数
「_」を先頭または後ろに付ける(preffix suffix)
例:_variable

●static private/protected変数
「__」を先頭または後ろにつける(twoPreffix twoSuffix)

●参考サイト
http://homepage1.nifty.com/~takaot/prprpr/varname.html

拍手[22回]

java:Javaコーディング標準:ファイル構成

●今回は以下のJavaコーディング標準より「2.ファイル構成」について
http://objectclub.jp/community/codingstandard/CodingStd.pdf

●ファイル名
public class クラス名のとき
①クラス名.javaをファイル名として設定する
②他のclassの名前はファイル名に使わない

●ファイルの位置
①プロジェクトのルートディレクトリ<ProjectRoot>を決定
②A.BC.DEF.GHIJパッケージのファイル位置
<ProjectRoot>/A/BC/DEF/GHIJ

●テストクラス名
①「クラス名」のテストクラス名は「クラス名Test」とする
例:ClassName → ClassNameTest

②「パッケージ名」のテストクラス名は「パッケージ名の最終ディレクトリ名Test」とする
例:A.BC.DEF.GHIJ → GHIJTest

③「クラス名」のユニットテストクラス名は「クラス名Ut」などでも良い

●テストクラスの位置
①被テストクラスと同じディレクトリ

または

②サブディレクトリ「test」「ut」

または

③test.パッケージ名のディレクトリ
※物理的に被テストクラスに近い位置に置く

拍手[0回]

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

最新TB

プロフィール

HN:
てんねん
性別:
非公開

バーコード

ブログ内検索

P R

カウンター

忍者アナライズ