Geçici Değişkenlerin Sorguya Dönüştürülmesi (Replace Temp with Query)

Eki 19th, 2011 | Yazar: Özcan Acar | Kategori: Refactoring

Bir metot bünyesinde bir işlemin sonucu geçici bir değişkende saklanabilir. Aşağıda yer alan kod örneğinde basePrice geçici bir değişkendir ve ihtiva ettiği değer fiyat * adet şeklinde hesaplanmaktadır. Replace Temp with Query refactoring metodunu kullanılarak geçici değişkenin değerini elde etmek için kullanılan yapı yeni bir metot bünyesinde taşınır. Geçici değişkenin kullanıldığı diğer alanlar metot ismiyle değiştirilir. Bu şekilde yapılan işlemin başka metotlar bünyesinde kullanılması sağlanır.


public double calculatePrice(final double price, final int itemCount)
	{
		double basePrice = price * itemCount;
		double tax = ( basePrice / 100 ) * 18.00;
		double totalPrice = basePrice + tax;
		return totalPrice;
	}

Refactoring işleminin ardından oluşan yeni yapı aşağıdaki şekildedir.


package com.kurumsaljava.refactoring.replaceTempwithQuery;

public class ReplaceTempwithQueryRefactored {

	private double price;
	private int itemCount;

	public ReplaceTempwithQueryRefactored(final double pPrice,
			final int pItemCount) {
		this.price = pPrice;
		this.itemCount = pItemCount;
	}

	public double calculatePrice() {
		double tax = (getBasePrice() / 100) * 18.00;
		return getBasePrice() + tax;
	}

	private double getBasePrice() {
		return price * itemCount;
	}
}

getBasePrice isminde, başka bir metot bünyesinde tekrar kullanılabilir yapıda yeni bir metot oluşturmus olduk. getBasePrice sorgu (query) yaptığımız bir metotdur. Belli bir değeri elde etmek için bu metodu sorgulamaktayız. basePrice isimli geçici değişkeni ortadan kaldırmak için getBasePrice metodunu kullandık yani geçici değişkeni bir sorguya dönüştürmüş olduk. Bu sebepten dolayı Replace Temp with Query‘yi Geçici Değişkenlerin Sorguya Dönüştürülmesi olarak tercüme ettim.

calculatePrice metodunu tekrar gözden geçirdiğimiz zaman, katma değer verginin hesaplandığı görmekteyiz. Eğer daha önce basePrice geçici değişkenini bir sorguya dönüştürmemiş olsaydık, katma değer vergisinin hesaplandığı bölümü refactor etmemiz kolay olmayacaktı. Ama bu şekilde katma değer vergisinin hesaplandığı kod kısmını aşağıdaki şekilde refactor edebiliriz.


package com.kurumsaljava.refactoring.replaceTempwithQuery;

public class ReplaceTempwithQueryRefactored {

	private static final double TAX_RATE = 18.00;
	private double price;
	private int itemCount;

	public ReplaceTempwithQueryRefactored(final double pPrice,
			final int pItemCount) {
		this.price = pPrice;
		this.itemCount = pItemCount;
	}

	public double calculatePrice() {
		double tax = calculateTax();
		return getBasePrice() + tax;
	}

	private double calculateTax() {
		return (getBasePrice() / 100) * TAX_RATE;
	}

	private double getBasePrice() {
		return price * itemCount;
	}
}


EOF (End Of File)
Özcan Acar

Share Button

Özcan Acar

Bilgisayar mühendisi olan Özcan Acar 1997 yılından beri programcı olarak çalışıyor.

KurumsalJava.com, SmartHomeProgrammer.com ve Mikrodevre.com adresleri altında blog yazıyor. Kurduğu BTSoru.com'da ona yazılımla ile ilgili sorularınızı yöneltebilirsiniz. Pratik Programcı Yayınları bünyesinde Pratik Spring, Pratik Agile, Pratik Git ve Design Patterns ismini taşıyan kitapları bulunmaktadır. 21.12.2009 tarihinde Java Champion olarak seçildi.
  • Share/Bookmark
yorum yok. | 1.403 kez okundu |

1 Yıldız2 Yıldız3 Yıldız4 Yıldız5 Yıldız (Değerlendirme bulunmuyor)
Loading ... Loading ...
Tags: ,

BU YAZI İÇİN BİR YORUM YAPABİLİRSİNİZ.