Studi Kasus: Panggil saja aku Interpret(9)

Panggil saja aku Interpret

5+2+4-3+10-2=?

Konversi string 1 ke object Satu.

Konversi string 2 ke object Dua.

Konversi string 3 ke object Tiga.

…dst sampai Sembilan.

Object puluhan

Value dalam komposisi puluhan

Object ratusan

Object penjumlahan

Buat Number.CreateNewNumber bisa menerima puluhan

Refactor Convert untuk kondisi panjang ekspresi ==2

Panggil interpret saja untuk convert

Eksepsi jika tidak ada ekspresi yang bersesuaian

Bagian pertama dan kedua dari blok if didalam method Convert, sebetulnya dimaksudkan untuk menginterpretasi jika didalam ekspresi tidak ada operator. Maka, untuk memindahkan blok ini kedalam method Interpret adalah cukup dengan memeriksa apakah didalam ekspresi ada operator + atau tidak.

private IExpression interpret(string ekspresi) 
{ 
	ekspresi=ekspresi.Trim(); 
	ekspresi=ekspresi.Trim('+','-'); 
	if(!(ekspresi.Contains("+")||ekspresi.Contains("-"))) 
		return Number.CreateNewNumber(ekspresi); 
	else{ 
		IExpression exp1=getExp1(ekspresi); 
		IExpression exp2=getExp2(ekspresi); 
		return getOperator(ekspresi,exp1,exp2); 
	} 
}

Perubahan ini tidak mempengaruhi test. NUnit tetap green. Karena itu method Convert saya ubah menjadi,

public IExpression Convert (string ekspresi) 
{ 
	if(ekspresi.Length==1) 
		return interpret(ekspresi); 
	else if (ekspresi.Length == 2) 
		return interpret(ekspresi); 
	else if(ekspresi.Length>2) 
	    return interpret(ekspresi); 
	else 
		return interpret(ekspresi); 
}
	<p>Semua blok if memanggil method yang sama : interpret. Dengan demikian if boleh kita hilangkan,</p>

public IExpression Convert (string ekspresi) 
{ 
		return interpret(ekspresi); 
}

Lebih sederhana dan mudah dibaca. Agar lebih mudah dibaca lagi, kia akan ganti + dan – yang bertebaran dimana-mana itu dengan enum operator.

Iklan

There are no comments on this post.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: