Yeni ve Eski Refactoring Yöntemleri

Çok az yapıldığına şahit olmakla birlikte, eskiden nasıl refactoring yapılırdı?

Testler yoksa zaten refactoring diye bir şey söz konusu olamazdı. Testler olsa bile çok büyük çapta refactoringler yapıldığına şahit olmadım. Genelde bir sınıf ya da metot bazında refactoring işlemleri yapılırdı, çünkü oluşacak yan etkilerin tespit edileceğinin garantisini kimse veremezdi.

Oysaki yıllarca SRP, OCP, DIP yani SOLID ile mükemmel mimariler oluşturduk, tüm implementasyonları gizledik, dışariye tanımlar API’ler sunduk, Spring ile dependecy injection yaptık.

Peki refactoring yapmayacaksak neden bu kadar refactor edilebilir mimariler oluşturduk? Çünkü yapabildiğimiz için.

Kodun yeniden yapılandırılması yani refactoring dış davranışı değiştirmeden, iç implementasyonu yenileme işlemidir. Buradaki amaç implementasyonun mevcut gereksinimleri kapsayacak şekilde yenilenmiş olmasıdır.

Hep OCP (open closed principle) ya da DIP (dependency ınversion principle) mevcut implementasyonu gelecek yeni gereksinimlere açık tutmak için varmış gibi algılandı ve uygulandı. Oysaki bu tasarım prensipleri daha iyi refactoring yapabilmek için vardır. Ama yazılımın bu kısmı çok kişiyi ilgilendirmediği ve SOLID ile kod yazmak daha zevkli olduğu için işin sadece kod yazma kısmına konsantre olundu.

Sonuç: koca koca, yeniden yapılandırılamayan, extend edilemeyen, hantal monolitler.

Bu yüzden bir uygulamanın ömrü on sene ile sınırlı hale geldi.

Ama yapay zeka ile durum tamamen değişti. Artık kodu yeniden yapılandırmak bir maliyet ve zaman problemi olmaktan çıkmaya başladı.

Eskiden aylar sürebilecek, kimsenin dokunmaya cesaret edemediği bir monoliti bugün yapay zeka desteğiyle parça parça yeniden yapılandırmak mümkün.

Üstelik yapay zeka sadece kodu değiştirmiyor. Mevcut sistemi analiz edebiliyor, bağımlılıkları tespit edebiliyor, testler oluşturabiliyor, refactoring işlemini gerçekleştirebiliyor ve ardından testleri tekrar çalıştırarak dış davranışın değişmediğini kontrol edebiliyor.

Bu aslında refactoring’in yıllardır vaat ettiği seydi:

Dışarıdan aynı sistem, içeride tamamen farklı bir implementasyon.

Bence yapay zekanın yazılım dünyasında yaratacağı en büyük değişimlerden biri de burada olacak.

Artık bir uygulamayı 10 yıl boyunca büyütüp, sonunda “buna artık dokunamayız, yeniden yazmamız gerekiyor” demek zorunda değiliz.

Gerektiğinde bir modülü, bir bounded context’i, hatta uygulamanın büyük bir bölümünü yeniden yapılandırabiliriz.

Bu noktada SOLID, Clean Architecture, DDD gibi yaklaşımların anlamı da değişiyor. Bunların amacı sadece “güzel kod yazmak” değil.

Asıl amaç değiştirilebilir yazılım üretmek.

Ve belki de ilk defa elimizde, bu değiştirilebilirliği gerçekten kullanabilecek kadar ucuz ve hızlı bir araç var: yapay zeka.

Bu yüzden geleceğin önemli yazılım geliştirme becerilerinden biri kod yazmak değil, mevcut bir sistemi güvenli bir şekilde sürekli yeniden yapılandırabilmek olacak.

Kod artık kutsal değil.

Davranış kutsal.

Implementasyon değişebilir.

📢 Önemli Bağlantılar
▶️ YouTube Kanalım En yeni videoları kaçırmamak için abone olun Kanalı Ziyaret Et →
📘 Yapay Zeka Çağında Yazılım Geliştirme Ücretsiz e-kitabı PDF olarak indirin ve okuyun PDF'i İndir →