Posts Tagged XPプログラミング

仮コード・テストコード・リアルコード

XPプログラミングで特にテスト駆動開発といわれ、仮コード・テストコード・リアルコードの順番でプログラムを開発していくのが良いとされてます。

Head First Javaで、簡単にXPプログラミングの説明がしてあったので、少し要約してみる。

仮コードで、クラスに必要なものを挙げる。

仮コード・テストコード・リアルコードをどの単位でやっていくかというと、Javaではクラス単位でやります。第一行程の仮コード作成は、そのクラスに必要なメソッド、変数を具体的に書いていくことです。

たとえば、足し算を行うクラスtashizanというのがあるとします。(足し算をするクラスを作ります。)

「ここでは、tashizanクラスのコンストラクタにint型引数prm1とprm2を受けて、それぞれを足したモノをインスタンス変数resultに代入し、resultをゲッターメソッドでmainメソッドのあるクラスへ返します。」

こんな感じに、どんなものが必要なのかを書いていく。複雑になるにつれて(これら文章で書くより)、より実際のコードに近い形で書いていく方が良いでしょう。(ifとかwhileを使い、極力リアルコード作成の手間を減らす。

テストコードの作成は、リアルコードを書く前に書く。

テストコードとは、すなわち、リアルコードをテストするコードのことです。驚きなのが、リアルコードを書く前にテストコードを書くということです。

テストコードを先に書けば、そのクラスで返すもの、受け取るもの、メソッドが自ずとよくわかるようになるはずです。このtashizanクラスのテストコードは

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Class tashizanTestCode {
	private int inNumber1;
	private int inNumber2;
	private int result;
 
	public static void main (String args[]){
		inNumber1 = 10;
		inNumber2 = 20;
 
		tashizan addition1 = new tashizan(inNumber1,inNumber);
 
		result = addition1.getResult();
 
		if (result == 30){
			System.out.println("成功");
		}else{
			System.out.println("失敗");
		}
 
	}
}

tashizanクラスから戻された値が30以外の場合は、失敗とするテストコードです。(あってる・・・よね。)

リアルコードを書く。

ここで、本来必要となるリアルコードを書いていきます。上のテストコードを動作させるためのコードを書けばよいのです。

1
2
3
4
5
6
7
8
9
10
11
12
13
class tashizan {
	private int prm1;
	private int prm2;
	private int reslut;
 
	void tashizan (int prm1,int prm2){
		result = prm1 + prm2;
	}
 
	int getResult(){
		return result;
	}
}

おそらく、これをみた多くの人は

「そんなめんどくさいことやってられない。」

とお思いでしょう。こんな簡単なプログラムであれば、そもそもクラス分けをする必要もないですが、もっと大きなプログラム、役に立つのではないかと思います。

テストコードを書けばリアルコードは短い時間でかけますし、しかも必要最低限のコードしか書かないので、見た目もすっきり。いいことづくしなので、是非皆さんもチャレンジしてみてください。

,

No Comments