Refactoring Nedir?
Yazılımcıların internetteki türkçe kaynağı olan BtSoru’da dolaşırken. Sağ üstte duran Türkiye Yazılımcı Raporu’na gözüm çarptı bkz. ve oradan refactoringe kadar geldim sizde incelerseniz nasıl geldiğimi anlayabilirsiniz. Aslında çoğu yazılımcının yaptığı birşey refactoring. Ama onu yaptığından habersizdir masum yazılımcı ? Neyse bu yazıya buradan ulaşabilirsiniz şimdilik kolay gelsin.
Refactoring yazılım dünyasındaki tam anlamı yeniden düzenleme demektir.
Her ne kadar tüm yazılımcıların işi hiç bitmesede, yöneticiler sürekli yeni taleplerde bulunsa da üzerinde refactoring yapılmayan yazılım belli bir süre sonunda tıkanır. Daha sonrasında yazılımcılardan “olmadı bu yeniden yazalım” benzeri korkunç laflar duyabilirsiniz. (unutmadan asla böyle bir şey yapmayın) Malesef bir çok yazılımda bu yapılmaz hatta yazılımcılar 3 yıl çnce yazdığı kodun halen üzerinde bir değişiklik yapılmamasından gurur duyar. (Bu sadece belirli bir kaç durumda geçerlidir)
Yazılım diğer mühendislik alanlarından farklıdır. Yaptığınız işi sürekli güncel tutmak, yeni teknolojilere uyarlamanız geliştirdiğiniz uygulamanın kalitesini arttırır. Bunun yanında yazılımcılarınızın eski yazılan kodlara bakıp hataları görmesiyle ilerde yapacağı hataların azalmasını sağlayabilirsiniz.
Eğer üzerinde uğraştığınız yazılım ile ilgili büyük planlarınız varsa ne kadar çok işiniz olursa olsun belirli aralıklarda yazılım üzerinde yeniden refactoring yapmanız şarttır.
Nasıl?
Öncelikle refactoring’de temel amaç davranışı değiştirmeden iyileştirme yapmaktır. Bu yüzden yaptığınız değişiklikleri doğrulayacak bir unit test sistemi kullanmalısınız. Unit test’in ne olduğunu bilmiyorsanız .net için geliştirilmiş olan <a href="http://www.nunit these details.org/”>www.nunit.org sitesine bakabilir veya bir sonraki yazımı bekleyebilirsiniz. (bence beklemeyin)
Diyelim ki unit test yapmıyorsunuz o zaman önce değişikliği yapacağınız kısmı test eden unit test’i hazırlayın ardından refactoring işlemlerinizi yapabilirsiniz. Bu şekilde yavaş yavaş unit test kütüphaneniz de oluşacaktır.
Refactoring deki ikinci önemli kısım yaptığınız değişikliklerin çok büyük olmaması gereklidir. Mesela bir fonksiyonu ele alın bunun üzerindeki yapabileceğiniz iyileştirmeleri kontrol edin. Fonksiyon eskisi ile aynı işi yapmalı yani girdi çıktıları değişmemelidir. (Ben genelde kendimi tutamayıp büyük değişiklikler yaptığım oluyor ancak o fonksiyonu kullanan diğer kodların eskisi gibi çalışmasını sağlıyorum. (Method overloading,[Obsolete] tagı v.s))
Fonksiyon üstünde değişikliği yaptıktan sonra yapmanız gereken en önemli iş test etmektir. Değişiklik-Test-Değişiklik-Test şeklinde ufak adımlarla ilerleyin.
Refactoring konusu geçerken, analiz konusunda yardım alabileceğiniz tool olarak FxCop’u tavsiye ederim. Kontrol ettiği şeyler ve ne kadar çok “sorun” bulduğunu gördüğünüzde hayranlık duyacağınıza garanti veririm.
Yapabiliyorsanız takımınızdaki bir kişinin (en “geek” olanı seçmeye çalışın ve asla yeni işe aldığınız birisi olmasın) yarım zamanını bu işe verin ve diğer yazılımcılara geri dönüş yapsın. Kaynak ayıramıyorsanız takımdaki her kişi için günlük 1 veya 2 saati buna ayırın. Zaman olarak akşam saatlerini seçmeniz yazılımcıların hoşuna gidecektir.
Kimin hangi kısım ile uğraşacağı konusunda bir sınırlama veya iş paylaşımı yapmaya çalışın, bu şekilde acemi yazılımcılarınız tekniklerini geliştirir, usta yazılımcılarınızda acemilerin yazdığı kodları düzeltir. Bu konuda en iyi yöntem yazılımcıları serbest bırakmaktır.
About Post Author
Tags: refactoring