Home > Refactoring > List parameter yg panjang

List parameter yg panjang

public void calculate(int a, int b, int c, int d, int e, int f, int g) 
{
      // lakukan kalkulasi yg menakjubkan di sini
}

walah banyak banget parameternya!!! Waktu awal2 belajar programming yg prosedural dianjurkan lewatkan semua data yg dibutuhkan oleh prosedurmu. yah… wajar aja sih. Karena semua datanya global. Klo di oo, ga ada data global. Semua dikapsulkan alias dibungkus dalam kelas. Data yg global biasanya membuat kacau. Karena semuanya share data yg sama, ubah data yg sama. Coba klo misalnya struktur datanya berubah .. wah .. kita harus cari2 procedure2 apa saja yg make data itu ….
ga boleh terlewat satupun .. bayangkan misalnya filenya ada 300-an … sabar2lah ….

Nah di oo klo misalnya kita butuh sesuatu kita hanya minta aja sama object lain. Jadi dengan object kita ga usah passing semua dari method. Tapi seperlunya saja.
Nah data yg lain ada di mana… Ya ada di kelas dimana method itu ada .. Namanya juga encapsulasi …
Data dan operasi terhadap data dikelompokkan dalam kelas .. Beda sama prosedural dimana data dipisah dengan operasinya…

Jadi di oo parameter cenderung lebih kecil dibandingkan dengan prosedural.

contoh ….

Ini klo di prosedural … Perhatikan bahwa data dipisah …. dan perhatikan juga parameternya

// definisi data
struct Point
{
	int x;
	int y;
}

// definisi operasi terhadap data .. dalam hal ini datanya point
void MovePointTo(Point * point, int newX, int newY)
{
	point->x = newX;
	point->y = newY;
}

klo dengan oo bagaimana ??

public class Point
{
	private int x;
	private int y;

	public Point(int x, int y)
	{
		this.x = x;
		this.y = y;
	}

	public Point() : this(0, 0) {}

	public void MoveTo(int newX, int newY)
	{
		this.x = newX;
		this.y = newY;
	}
}

perhatikan perbedaan parameternya …. ok … saya tunggu anda untuk merenungkan sejenak.

Parameter yang banyak lebih sulit dimengerti, ga konsisten dan sulit. Karena kita pasti akan menambahkan parameter jika kita butuh data lagi. Nah cara mengubahnya menjadi sedikit parameter adalah dengan melewatkan object yang dibutuhkan dan menanyakan datanya dari object tersebut.

Tapi dengan melewatkan object kita akan menjadi tergantung alias depend ke object tersebut kan ??
Nah.. itu adalah pilihan. Jika parameter list panjang dan perubahan sering terjadi terhadap parameter tersebut kita harus memikirkan lagi struktur dependencynya

Categories: Refactoring Tags: ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: