Gelelim refactoring konusuna. Programci iken en sevdigim konulardan birisi idi.
Refactoring ile kodun yeniden yapilandirilmasini kastediyorum. Refactoring her daim yapilabilecek bir aktivite degildir. Yapilabilmesi icin yerine getirilmesi gereken cok önemli bir sart bulunmaktadir. Test mevcudiyeti.
Cevik olmanin temelini aslinda refactoring dedigimiz aktive sagliyor. Onun icin de testler lazim. Bu yazimda buna deginmistim.
Simdi yeni bir savim var:
> Loop Engineering mimari seviyede yeni refactoring yöntemidir.
Bu tezimi aciklayayim.
Yapay zeka öncesinde nasil refactoring yapiyorduk?
Kod
↓
Testleri kostur
↓
Kodu degistir
↓
Testleri kostur
↓
Kodu degistir
↓
Testleri kostur
Testler burada imdat simidi görevi görüyorlar. Onlar olmadan kod degisikliklerin yan etkilerini yakalamak imkansiz. Bu yüzden code coverage yüksek olmak zorunda.
Martin Fowler refactoring yöntemini su sekilde tanimliyor:
> Davranisi degistirmeden ic isleyisi degistirmek.
Bu yüzden zaten yillarca interface siniflar ve onlari implemente eden somut siniflari gelistirdik, cünkü isleyisi degistirmeden ic davranisi yeni bir somut sinif implementasyonu ile degistirmek mümkündü.
Yapay zeka ile durum degisti. Artik Opus benim icin gerekli refactoring islemini yapiyor. Ben artik herhangi bir sinifi refactor etmiyorum. Opus araciligi ile tüm bir sistemi refactor ediyorum.
Refactoring islemini loop engineering ile nasil iliskilendiriyorum?
Bir loop plan yapisina bakalim:
Analiz
↓
Plan
↓
Implementasyon
↓
Test
↓
Review
↓
Eksik ya da problemi yerlerin tespiti
↓
Tekrar analiz
Bu döngü refactoring döngüsüne cok benzemiyor mu? Tek bir farki var. Eskiden. bu adimlarin hepsini ben kendim tek tek atmak zorundaydim. Bunu simdi LLM yapiyor.
Loop engineering sayesinde bütün bir sistemi istedigim sekle sokana kadar refactor edebilirim. Eskinden ben metod, sinif, modül bazinda bu islemi yaparken, günümüzde tek bir loop ile koca bir sistemi bile yeniden yapilandirabiliyorum.
Burada testler yine ayni vazifeyi görmeye devam ediyorlar. Her loop sonunda testlerin de calisir durumda olmalari, refactoring isleminin yan etkisiz yapildigini garanti edecektir.
Burada yazilimcinn vazifesi de tam anlamiyla degismis durumda. Artik refactoring yapan kendisi degil, kullandigi LLM’dir. Yazilimci iyi bir uygulama mimarisi icin ne gerektigini cok iyi bilen ve bu bilgisi isiginda degisik iterasyonlarda tasarladigi sistemin oraya cikmasini saglayan kisidir.
Loop engineering refactoring yönteminin bir sonraki evrimidir.