Refactoring Prensipleri - Ne Zaman Refactoring Yapmalıyız

Refactoring için ayrı bir zaman ayrılmalı mı? Ayrılacaksa ne kadar olmalı? Refactoring için programlı mı çalışmak gerekir?

When should you refactor?

Daha önceki makalelerde refactoring nedir ve nasıl yapılır konularını anlatmaya çalışmıştım. Refactoring’in aslında bir disiplin olduğundan bahsetmiştim. Bu mantıkla düşünürsek, refactoring için ayrıca zaman ayrılmaz ve onun için bir program yapılmaz. Refactoring, yazılım geliştirme süreci içerisindedir ve yazılım sürecinin bir parçası ve adımıdır. Yazılan her özellik için refactoring yapılabilir.

The first time you do something, you just do it. The second time you do something similar, you wince at the duplication, but you do the duplicate thing anyway. The third time you do something similar, you refactor. (Don Roberts)

Yeni Bir Fonksiyon Eklerken Refactoring Yapmak

Refactoring yapmak için en iyi zamanlardan birisi, yazılıma yeni bir özellik eklerken yapılanıdır. Bu aşamada yapılacak olan refactoring’in genelde ilk nedeni, değiştirilecek olan kodun daha iyi anlaşılmasıdır. Bu kodlar başkası tarafından da yazılmış olabilir, siz de yazmış olabilirsiniz. Bazen kendi kodlarımızı da unutabiliriz. Bundan dolayı, kodun daha hızlı anlaşılması ve temizlenmesi için refactoring yapabiliriz.

Yeni özellik eklerken, refactoring yapıp yapmamaya karar vermenin diğer bir adımı ise, tasarımın size ne kadar yardımcı olduğunu anlamaktır. Eğer daha iyi bir tasarım, yeni özellik ekleme işini kolaylaştıracaksa, refactoring yapılmadır. Refactoring ile iyileştirilen bir tasarıma sahip yazılımın, geliştirme süreçleri daha da hızlanır.

Hata Ayıklama İhtiyacı Varsa Refactoring Yapmak

Daha önceki makalelerde, hata yakalamanın kolaylaşmasının, refactoring’in doğal bir sonucu olduğundan bahsetmiştim. Çünkü daha iyi anlaşılan bir kod içerisindeki hataların bulunması da kolaylaşır. Tam tersini düşündüğümüz zaman; eğer kodlarda bir hata(bug) varsa ve bunu kolay bulmak istiyorsak, önce kodları daha iyi anlamalıyız. Daha iyi anlama için de refactoring yapmalıyız. Yani hataların bulunması da aslında refactoring yapmak için, çok iyi bir bahanedir.

Code Review Yaparken Refactoring Yapmak

Code review yapmak, bilginin takım içerisinde paylaşılmasını sağlar. Düzenli kod review yapan takımlarda, takım üyeleri sürekli aynı frekansı yakalayabilirler. Ayrıca code review ile tecrübeli yazılımcılar, bilgilerini daha az tecrübeli olanlara aktarabilirler. Elbette sadece tecrübe ile alakalı da değildir. Kendi yazdığımız kodda, bizim görmediğimiz ama takımın görebileceği şeyler olabilir. Code review, her tecrübede yazılımcı için faydalıdır. Code review yapan takımların, kodları daha temiz, daha az hatalı olur. Code review, farklı insanlardan farklı tavsiyelerin alınması için iyi bir fırsattır.

Code review, refactoring yapmak için de iyi bir fırsattır. Hem kodları gözden geçiren için, hem de değişiklik yapacak olan için. Kodları gözden geçiren yazılımcı, kodlardaki eksiklikleri gördükçe, nasıl kötü kod (sadece kötü kod demek doğru olmaz, refactoring ihtiyacı olan kodlar da diyebiliriz) yazılır, başkasının kodlarından görebilir ve yazacağı kodlarda bu hataları yapmaz.

Code review yaparken en iyi yöntem, küçük review grupları oluşturmaktır. Özellikle bir reviewer ile kodu yazanın tek makinede birlikte kodları beraber gözden geçirmesidir. Kolay olan refactoring ihtiyaçları, birlikte yapılır (Pair Programming). Diğerleri için reviewer tavsiyelerini söyler, kodu yazan bu oturumdan sonra gerekli değişiklikleri yapar.

Geniş çaplı tasarım gözden geçirmeleri için, daha büyük review grupları oluşturulabilir. Ama bu ekip için kodların incelenmesi yerine, tasarımın görselleştirilmesi (UML, CRC Cards) daha iyi bir yöntemdir.

Code review konusu aslında ciddi bir konudur. Bu makalenin ana konusu olmadığından fazla da uzatmıyorum. Ayrıca bir makalede code review konusu ele alınabilir.

Sonuç

  • Okuması zor olan kodların değiştirilmesi zordur.
  • Tekrarların olduğu kodların değiştirilmesi zordur.
  • Kompleks koşulların olduğu kodların değiştirilmesi zordur.
  • Çalışan kodun işlevselliğini tehlikeye atacak özelliklerin eklenmesinin gerektiği kodların, değiştirilmesi zordur.

alirıza adıyahşi

Written by

Developer @volosoftcompany

Bilişim Hareketi

Türkiye'nin bilişim alanında gelişmesi için bir katkı

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade