Metot imzasında yer alan parametrelere metot bünyesinde değer atanmamalıdır. Bu gibi atamalar istenmeyen sonuçlar doğurabilir. Remove Assignments to Parameters refactoring metodu kullanılarak bu tür parametre değer atamaları geçici degişkenlere yapılmalıdır.
private void execute(int value) { if (value == 10) value = 1; doSometthink(value); }
Yukarda yer alan metot Remove Assignments to Parameters uygulandığı taktirde aşağıdaki yapıya sahip olacaktır. Metot bünyesinde result isminde yeni geçici bir değişken tanımlanmış ve böylece parametrenin taşıdığı değer metot gövdesinde korunmuştur.
private void execute(int value) { int result = 0; if (value == 10) result = 1; doSometthink(result); }
final kelimesi kullanılarak metot bünyesinde parametrelere değer atanması otomatik olarak engellenebilir.
private void execute(final int value) { if (value == 10) value = 1; doSometthink(value); }
Yukarda yer alan value=1 şeklindeki atama, value parametresi final olduğu için aşağıda yer alan hataya sebep olacaktır:
The final local variable value cannot be assigned. It must be blank and not using a compound assignment
EOF (End Of Fun)
Özcan Acar
Refactoring kategorisinden son yazılar
- Kataların Anası - June 30th, 2012
- Parametrik Konstruktör (Parameterize Constructor) - December 29th, 2011
- Yeni Sınıf Oluşturma (Extract Class) - October 29th, 2011
- Koşullu Mantığın Komut İle Değiştirilmesi (Replace Conditional Dispatcher With Command) - October 26th, 2011
- Metodu Metot Nesnesine Dönüştürme (Replace Method with Method Object) - October 24th, 2011
- Refactoring Oturumu (Video) - October 20th, 2011
- Geçici Değişkenlerin Sorguya Dönüştürülmesi (Replace Temp with Query) - October 19th, 2011
- Yeni Metot Oluşturma (Extract Method) - October 16th, 2011
- Koşulları Parçalarına Ayırma (Reverse Conditional) - October 15th, 2011