İçeriğe geç
parazade

Spagetti Kod Nedir?

İngilizce: Spaghetti Code

Yayın: · Son güncelleme:

Spagetti Kod Nedir? Kısaca

Spagetti kod, akışı tabaktaki spagetti gibi birbirine dolanmış, yapısı belirsiz, takip etmesi ve değiştirmesi çok zor koddur. Genelde plansız büyüyen, kopyala yapıştırla genişleyen ve kuralsız yazılan projelerde ortaya çıkar.

Spagetti Kod nedir?
İçindekiler
  1. Spagetti kod nedir?
  2. Nasıl oluşur, belirtileri nelerdir?
  3. Dağınık kodu toparlamanın yolu

Spagetti kod nedir?

Spagetti kod, bir ucunu çektiğinizde başka bir yerin hareket ettiği koddur. Fonksiyonlar birbirini beklenmedik yerlerden çağırır, aynı değişken onlarca yerde değiştirilir ve bir işin nerede başlayıp nerede bittiğini bulmak saatler alır. Adı, iç içe geçmiş makarna tellerinden gelir.

Kod çalışabilir. Sorun, onu anlamak ve değiştirmektir.

Nasıl oluşur, belirtileri nelerdir?

Çoğu zaman kötü niyetle değil, zaman baskısıyla oluşur. Proje küçükken düzenli görünen kod, her acil istekte biraz daha yamanır. Plan yoktur, testler yoktur ve herkes kendi yöntemini ekler.

Belirtiler tanıdıktır. Binlerce satırlık dosyalar, sekiz kat iç içe if blokları, her yerden erişilen global değişkenler ve "bunu kim yazmış" sorusuna cevap verilemeyen bölümler.

Örneğin küçük bir işletmenin sipariş sistemi yıllar içinde büyür. Bir gün kargo firması değişir ve geliştirici kargo kodunun fatura, stok ve bildirim dosyalarına dağılmış olduğunu görür. Tek bir değişiklik dört ayrı yerde test gerektirir.

Dağınık kodu toparlamanın yolu

Baştan yazma isteği güçlü olur, ama çoğu zaman en riskli yoldur. Daha güvenli yaklaşım adım adım düzenlemektir.

Önce mevcut davranışı yakalayan testler yazın. Ardından en çok değişen bölümden başlayarak kodu küçük fonksiyonlara ve anlamlı modüllere ayırın. Her adımda testleri çalıştırın.

Bu süreç refactoring olarak bilinir ve sabır ister. Yeni yazılan kodda ise ortak kurallar ve kod incelemesiyle aynı tabloya düşmeyi önleyin.

Sıkça Sorulan Sorular

Spagetti kod sadece yeni başlayanlar mı yazar?

Hayır. Deneyimli ekipler de zaman baskısı, değişen gereksinimler ve plansız büyüme yüzünden spagetti koda düşebilir. Belirleyici olan bireysel beceriden çok, düzenli bakım ve kod inceleme alışkanlığıdır.

Spagetti kodu baştan yazmak mı daha iyi?

Çoğu zaman değildir. Baştan yazmak, mevcut kodun içinde saklı iş kurallarını kaybetme riski taşır ve uzun sürer. Testlerle desteklenen kademeli düzenleme genelde daha güvenlidir.

İlgili terimler

RefactoringRefactoring (yeniden düzenleme), yazılımın dışarıdan görünen davranışını değiştirmeden kodun iç yapısını daha okunur, sade ve bakımı kolay hâle getirmek için yapılan düzenlemelerdir. Yeni özellik eklemek ya da hata düzeltmek değildir.Temiz Kod(Clean Code)Temiz kod (clean code), başka bir geliştiricinin kolayca okuyup anlayabileceği, değiştirebileceği ve test edebileceği biçimde yazılmış koddur. Anlamlı isimler, küçük ve tek işe odaklı fonksiyonlar ve gereksiz karmaşıklıktan uzak bir yapı temel özellikleridir.Teknik Borç(Technical Debt)Teknik borç (technical debt), yazılımda hız kazanmak için seçilen kolay ya da geçici çözümlerin, ileride kodu değiştirmeyi zorlaştırarak ek iş ve maliyet doğurmasıdır. Tıpkı finansal borç gibi faizi vardır ve ödenmezse büyür.Legacy Kod(Legacy Code)Legacy kod (miras kod), hâlâ kullanılan ama eski teknolojilerle yazılmış, çoğu zaman belgesi ve testi eksik, yazanların artık ekipte olmadığı koddur. Şirketin işi için önemlidir ama değiştirmesi risklidir.Değişken(Variable)Değişken, programlamada bir değeri bellekte saklamak için kullanılan isimli alandır. İçindeki değer program çalışırken okunabilir ve değiştirilebilir; örneğin `fiyat = 250` satırı fiyat adlı bir değişken oluşturur.Fatura(Invoice)Fatura, satılan mal ya da yapılan hizmet karşılığında müşterinin borçlandığı tutarı göstermek üzere satıcı tarafından düzenlenip alıcıya verilen ticari ve vergisel belgedir. Vergi Usul Kanununda düzenlenir.Stok(Inventory)Stok, bir işletmenin satmak, üretimde kullanmak ya da hizmet sunarken tüketmek amacıyla elinde tuttuğu ham madde, yarı mamul, mamul ve ticari mallardır; bilançoda dönen varlıklar arasında gösterilir.