Dostlar, bugün size yaşadığım bir trajediyi anlatacağım. Legacy bir projede, "acil" bir bug fix'i yapmam gerekiyordu. Projeyi açtım, ilgili sınıfı buldum ve scroll bar'ın küçücük bir çizgiye dönüştüğünü gördüm. İçimden "Yok artık" dedim. Fare tekerleğini çevirdikçe, satır numaralarının hiç bitmediğini gördüm. Sonra baktım: 2,347 satır. Tek bir sınıf. Kafayı yiyecektim.
Merak ettim, bu kadar satırda ne yazıyor diye.
Java:
public class AllInOneGodClass {
Aradığım metodu bulmam 10 dakikamı aldı. Sanki bir romanın içinde tek bir cümle arıyordum. "Find" ile aradığım keyword, dosyada 48 yerde geçiyordu. Şaka gibi!
Bir an, "Ben bu işi düzeltmeliyim" diye bir gaz geldi. Hemen yeni bir branch açtım ve refactoring'e başladım. İlk hedef, en bariz utility metotları ayırmaktı. Ama bir sorun vardı: Her şey birbirine o kadar sıkı bağlanmıştı ki, bir metodu çıkarmaya çalışınca 20 yerde NullPointerException riski doğuyordu. Testler de yok tabii. Meğerse bu kod, korkudan kimse dokunamadığı için bu hale gelmiş.
Bir saat uğraştıktan sonra, sadece iki küçük metodu ve bir DTO'yu ayırabildim. Ana sınıf hala 2200 satıra yakındı. İçimde bir umutsuzluk hissettim. O an, temiz kod yazma isteğimin bir kısmının o dosyada öldüğünü düşündüm.
Aslında suç tamamen biz developer'larda değil. Bazen "hızlıca ekleyivereyim" derken, bazen de "aman dokunmayalım çalışıyor" korkusuyla bu monolitik canavarlar oluşuyor. Kimse "Bu metot burada durmamalı" demeye cesaret edemiyor. Zamanla herkes korkudan uzak duruyor ve dosya, korkunç bir leş gibi projenin ortasında büyümeye devam ediyor.
Peki siz hiç böyle 2000+ satırlık bir sınıfla karşılaştınız mı? Ne yaptınız? Gözünüz korktu mu yoksa "Ben hallederim" deyip tüm gününüzü refactoring'e mi adadınız? Ya da böyle bir kodu miras alan şanslı kişi siz misiniz? Yorumlara yazın, dertleşelim.