in Yazılım

Korkusuzca Refactor Yapmanın Sırrı

refactor yapmakBüyük projelerde refactor çalışması yapmak her zaman sıkıntılı bir süreçtir.  Kodun bir yerlerinde bir şeyler değiştirdiğinizde, başka kısımları bozma ihtimaliniz her zaman çok yüksektir. Bazen bir metodun ismini değiştirdiğinizde bile o metodu kullanan birçok yeri bozma ihtimaliniz vardır. Yazılımcının bütün bağlantıları aklında tutması ve refactor yaparken nerelerin etkilenmiş olduğunu tahmin etmesi gerçekten çok zordur. Yazılım günümüzde genellikle takım halinde geliştirilmektedir ve yazılımcılar korkusuzca bir birinin kodunu değiştirme cesaretine sahip olmalıdırlar. Başkasının yazdığı bir kodu değiştiriken nerelerin etkileneceğini tahmin etmek daha da zor bir iş haline dönüşmektedir. Siz ilgili yeri başarılı bir şekilde değiştirdiğinizi düşünürken muhtemelen başka yerleri bozmuş olursunuz. Bir de işe yeni giren bir yazılımcı binlerce satır koddan oluşan bir projede bir yerleri değiştirdiğinde muhtemelen başka birkaç yeri de bozacaktır.

Refactor yapmak biz yazılımcıların günlük iş hayatında en sık yapmak zorunda olduğu işlerden bir tanesidir ve bunu gönül rahatlığıyla yapabilmek için kodların nesne yönelimli programlama prensiblerine uygun yazılmış olması, kodlarda bol bol tasarım şablonlarının kullanılmış olması önemlidir. Bunların hepsinden daha önemlisi de projelerin Test Güdümlü Geliştirme (Test Driven Development)  metodolojisiyle geliştirilmesidir. Benim ve sektördeki birçok tecrübeli yazılımcının ortak fikri Test Güdümlü Geliştirme metodolojisiyle yazılan projelerin kesinlikle çok daha kolay ve güvenli bir şekilde refactor edilebileceği yönündedir. Bu nedenle projelerinizde kesinlikle birim test yazmayı zaman kaybı olarak görmeyin. Uzun vadede kesinlikle faydasını göreceksiniz.

Testleri eksiksiz olarak yazılmış bir projede refactor yaparken yapmanız gereken tek şey yaptığınız değişikliklerden sonra tüm testleri topluca çalıştırarak nereleri bozduğunuzu görmektir. Testler sayesinde nokta atışı yaparak bozduğunuz yerleri düzeltirsiniz. Böylece yaptığınız değişikliklerin başka hiçbir yeri bozmadığından emin olarak çok daha mutlu bir yazılımcı olursunuz.

Yaptığınız değişikliklerin başka bir takım arkadaşınız tarafından gözden geçirilmesi de birçok hatanın önceden tespit edilmesi açısından çok önemlidir. Bu nedenle yazılım ekiplerinin kod inceleme (code review) sürecine önem vermesi ve canlıya çıkacak her kodun incelenmesi çok önemlidir.