Yazılımda “Refactoring” yeniden düzenleme anlamına gelmektedir. Başka bir deyişle, yazılım davranışını değiştirmeden kodun karmaşıklığını azaltmak, okunabilirliğini arttırmak, çıkabilecek hataların düzeltilmesini ve ileride koda yapılabilecek eklentileri kolaylaştırmak için uygulanan bir işlemdir.
Çevik yazılım geliştirme sürecinde yeniden düzenlemenin önemli bir yeri vardır. Kodlama süresince belli aralıklarla yapılacak yeniden düzenlemeler, yazılımcının kodu daha rahat, hatasız, hızlı tamamlamasına olanak sağlar.
Öncelikle şunu belirtmemizde fayda var. “Yeniden düzenleme” yapmadan önce, düzenlemelerin yapılacağı kod bloklarının tespit edilmesi ve birim testlerinin oluşturulması gerekmektedir. Düzenlemenin temel amacında, yazılımın genel davranışında herhangi bir değişiklik yapılmaması vardır. Dolayısıyla Public fonksiyonlar ve/veya sınıfların giriş çıkış parametrelerinin değişmeyeceğini kabul etmeliyiz. Böylece, kodun yeniden düzenlenmeden önceki oluşturulan birim testlerini düzenleme yaptıktan sonra da uygulayabiliriz.
Yeniden düzenleme tekniklerine kısaca değinmek gerekirse;
- Daha fazla soyutlama gerektiren teknikler
- Alanlara erişimin getter/setter yordamlarla yapılması (veya özellik sahaların kullanılması).
- Tiplerin genelleştirilmesi (Generic types).
- Mantıksal kontrollerin kalıtım yapısı ile değiştirilmesi (polymorphism).
-
- Kodu daha fazla mantıksal parçalara ayıran teknikler
- Uzun ve karmaşık yordamların daha küçük yordamlara parçalanması (Method extraction).
- Kodun bazı parçalarının farklı bir sınıfa taşınması (class extraction).
-
- Kodlamada kullanılan isim ve isim uzaylarının değiştirilmesi / geliştirilmesi
- Yordam ve/veya alanların farklı bir sınıfa veya kaynak koda taşınması.
- Yordam ve/veya alan isimlerinin değiştirilmesi, dolayısıyla okunabilirliğin arttırılması.
- Nesnel programlamada, kodun bir üst veya alt sınıfa taşınması.
-
Eğer kullanıcı arabirimleri katmanında yeniden düzenleme ihtiyacı varsa, bu katmanda birim testleri uygulayamazsınız. Bu durumda testlerin manüel yapılması gerekmektedir. Dolayısıyla, tasarımınızda kullanıcı ara yüzü seviyesinde mantıksal algoritmalar varsa öncelikle bu yapının değişmesi, algoritmaların ara bir katmana alınması ve dolayısıyla ara yüz katmanının arındırılması gerekir.
Ali KALFAOĞLU
Yorumlar
Yorum Gönder