"Temiz Kod, Sağlam Sistem! Yazılımın Temel Taşlarını Öğrenmeye Hazır mısın?" Merhaba! Yazdığın kod bir gün başkaları tarafından da okunacak, geliştirilecek ya da test edilecek. Peki soruyorum: “Kodun bir başkası tarafından da geliştirilebilir mi?” “Yeni bir özellik eklemen gerektiğinde eski kodları bozuyor musun?” Eğer bu sorular seni biraz düşünmeye ittiyse, doğru yerdesin. Seni yazılım dünyasının çelik gibi sağlam 5 prensibiyle tanıştırayım: SOLID! Bu prensipler, yazılımın sadece çalışmasını değil, uzun vadede yönetilebilir ve güvenilir olmasını da garanti altına alıyor. SOLID Nedir? SOLID, nesne yönelimli programlamada kullanılan 5 temel prensibin baş harflerinden oluşur. Bu kavram ilk olarak yazılım dünyasının ünlü ismi Robert C. Martin (Uncle Bob) tarafından ortaya atılmıştır. Bu prensipler sayesinde: Kodun okunabilir olur Değiştirilebilir olur Test edilebilir olur Bakım masrafı azalır Haydi şimdi her harfi detaylıca, gerçek hayattan benzetmelerle inceleyelim: S – Single Responsibility Principle (Tek Sorumluluk Prensibi) "Bir sınıfın ya da fonksiyonun yalnızca bir sorumluluğu olmalı." Ne Demek? Bir sınıf, yalnızca tek bir işi yapmalı ve bu iş bütün kod boyunca net olmalı. Neden önemli? Eğer bir sınıfta hem dosya işlemleri, hem ekran yazdırma hem de veritabanı işlemleri varsa, bu kodu değiştirmek zor ve risklidir. Gerçek Hayat Benzetmesi: Bir ofiste çalışan bir personelin hem çay servisi yapması, hem muhasebe tutması, hem de teknik destek vermesi ne kadar verimli olur? "Bir adam elinde 4 farklı iş yaparken görülüyor: telefonla konuşma, temizlik, yemek, bilgisayar başında" O – Open/Closed Principle (Açık/Kapalı Prensibi) "Yazılım bileşenleri geliştirilmeye açık, ancak değiştirilmeye kapalı olmalı." Ne Demek? Mevcut sınıfı değiştirmeden yeni davranışlar ekleyebilmeliyiz. Yani eski koda dokunmadan yenisini eklemeliyiz. Neden önemli? Var olan fonksiyonu bozmadan yeni fonksiyonellik eklenebilir. Bu da hatasız ve süratli gelişimi sağlar. Gerçek Hayat Benzetmesi: Telefonuna yeni bir uygulama eklemek için işletim sistemini silip yeniden kurar mısın? Hayır. Mevcut sistemin üzerine yeni bir uygulama yüklenir. "Bir lego yapısına yeni parçalar ekleniyor, eski yapı bozulmuyor" L – Liskov Substitution Principle (Liskov Yerine Geçme Prensibi) "Bir alt sınıf, üst sınıfın yerine geçebilmeli ve sistem aynı şekilde çalışmalı." Ne Demek? Bir fonksiyon ya da metod, üst sınıf türündeki bir nesneyle çalışıyorsa, alt sınıf türüyle de sorunsuz çalışmalıdır. Neden önemli? Kodun çeşitli parçaları birbirinin yerine kullanılabilir olur. Bu da test edilebilirlik ve yeniden kullanım sağlar. Gerçek Hayat Benzetmesi: Elektrikli bir priz düşün. Saç kurutma makinesi de takarsın, telefon adaptörü de. Her cihaz aynı prizi sorunsuz kullanmalı. "Tek bir prize farklı cihazların bağlandığı bir görsel" I – Interface Segregation Principle (Arayüz Ayrımı Prensibi) "Kullanıcı, ihtiyacı olmayan metodlarla zorunlu olarak bağlantı kurmamalı." Ne Demek? Bir arayüz, herkesin işine yarayacak kadar genelleştirilmemeli. İhtiyaca göre ayrı arayüzler tanımlanmalı. Neden önemli? Büyük arayüzleri uygulamak yerine, ihtiyaca uygun daha küçük yapılar kodun sade kalmasını sağlar. Gerçek Hayat Benzetmesi: Bir kumanda düşün. Sadece ses açma-kapama tuşuna ihtiyacın varken 48 tuşlu dev bir kumandayla uğraşmak istemezsin. "Bir yanda sade 3 tuşlu bir kumanda, diğer yanda 50 tuşlu karmaşık kumanda" D – Dependency Inversion Principle (Bağımlılığı Tersine Çevirme) "Yüksek seviye modüller, düşük seviye modüllere bağımlı olmamalı. Her ikisi de soyutlamalara bağlanmalı." Ne Demek? Bir sınıf, diğer sınıfı doğrudan kullanmak yerine, araya bir arayüz (interface) koyarak haberleşmelidir. Neden önemli? Değişiklikler birbirini etkilemez. Bağımlılıklar kontrol altına alınır. Birimler bağımsız test edilebilir. Gerçek Hayat Benzetmesi: Her ülke farklı priz kullanır ama laptop adaptörü sayesinde dünya genelinde her yerde aynı cihazı şarj edebilirsin. Arada bir "interface" vardır. "Farklı prizlere uyan tek bir şarj adaptörü" Neden SOLID Prensipleri Hayati? Kodun karmaşıklığını azaltır Ekip çalışmasını kolaylaştırır Hataları bulmayı ve test etmeyi kolaylaştırır Gelecekteki değişiklikler için altyapı hazırlar “Kod yazmak sanattır. SOLID prensipleri bu sanatın mimari kurallarıdır.” Peki Sen Hazır mısın? Bu prensipleri öğrenmekle kalma, uygula. Mühendis gibi kod yaz, çözümler üret, sistem kur. Sen hangi SOLID prensibini en çok ihlal ediyorsun? Yorumlara yaz. Tartışalım. Gelişelim.