yazılım,c# ve domates kabuğu
« GüncellendikInductive User Interfaces »

Refactoring Nedir?

  14/07/06 12:32, by ertan, Categories: Coding

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 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.

Kullanıcı arabirimleri (UI) için unit test'i kullanamazsınız, UI katmanında yaptığınız işler elle test edilmek zorundadır. Tabiki burada UI katmanında logic bulunmadığını varsayıyorum. Eğer böyle bir hata yaptıysanız herşeyi bırakıp bu sorunu düzeltmenizi tavsiye ederim.

No feedback yet

Leave a comment


Your email address will not be revealed on this site.
  
(For my next comment on this site)
(Allow users to contact me through a message form -- Your email will not be revealed!)
Text Renderers:
 

©2017 by Ertan Tike

Contact | Help | Blog templates by Asevo | blogtool | dedicated hosting | evoTeam