Takip et

Tell, Don’t Ask Prensibi: Nesne Yönelimli Tasarımda Temel Bir İlke

Tell, Don’t Ask Prensibi: Nesne Yönelimli Tasarımda Temel Bir İlke

Nesne yönelimli programlamada (OOP) sıkça karşılaştığımız bir tasarım ilkesi olan “Tell, Don’t Ask” (Söyle, Sorma) prensibi, kod kalitesini ve sürdürülebilirliğini önemli ölçüde artırır. Bu prensip, nesnelerin iç durumlarına doğrudan erişmek yerine, nesnelere ne yapmaları gerektiğini “söylemeyi” savunur. Kısacası, nesnenin durumunu sorgulamak yerine, doğrudan ona bir eylem yaptırırız.

Peki, bu prensip neden önemlidir? Öncelikle, kodun okunabilirliğini ve anlaşılırlığını artırır. Bir nesnenin durumunu sorgulayarak onunla ilgili bir işlem yapmak yerine, doğrudan o nesneye işlemi yaptırmak, kodun daha akıcı ve daha kolay anlaşılır olmasını sağlar. Ayrıca, “Tell, Don’t Ask” prensibi, kodun daha az karmaşık ve daha sürdürülebilir olmasını sağlar. Nesnelerin iç durumları değiştiğinde, “sorgulama” yaklaşımıyla yazılmış kodlarda birçok yerin değiştirilmesi gerekebilir. Ancak “söyleme” yaklaşımıyla yazılmış kodlarda, değişiklik yapılması gereken yer sayısı çok daha azdır.

“Sorma” Yaklaşımının Dezavantajları

Öncelikle, “sorma” yaklaşımının neden istenmeyen bir yaklaşım olduğunu örneklerle inceleyelim. Diyelim ki bir Oyuncu sınıfımız var ve bu oyuncunun sağlık ve silahlar gibi özellikleri var. “Sorma” yaklaşımıyla, oyuncunun bir düşmana saldırmasını şu şekilde kodlayabiliriz:


public class Oyuncu {
    private int sağlık;
    private List<Silah> silahlar;

    // ... diğer metotlar ...

    public void düşmanaSaldır(Düşman düşman) {
        if (sağlık > 0 && silahlar.size() > 0) {
            // Saldırı işlemleri...
        } else {
            // Saldırı yapılamaz mesajı...
        }
    }
}

Bu örnekte, düşmanaSaldır metodu, oyuncunun sağlık durumunu ve silahlarını kontrol ederek saldırı yapıp yapamayacağına karar veriyor. Bu, “sorgulama” yaklaşımının bir örneğidir. Bu yaklaşımın dezavantajı, Oyuncu sınıfının iç durumuna bağımlı olmasıdır. sağlık veya silahlar değişirse, düşmanaSaldır metodu da değiştirilmelidir. Bu da bakımı zorlaştıran bir durumdur.

“Söyleme” Yaklaşımının Avantajları

Şimdi de “söyleme” yaklaşımını ele alalım. Aynı işlemi “söyleme” yaklaşımıyla şu şekilde gerçekleştirebiliriz:


public class Oyuncu {
    // ... diğer metotlar ...

    public void saldır(Düşman düşman) {
        // Saldırı işlemleri...  (Sağlık ve silah durumunu kontrol etmez)
    }
}

Bu örnekte, saldır metodu, oyuncunun sağlık durumunu veya silah durumunu kontrol etmez. Bunun yerine, doğrudan saldırı işlemlerini gerçekleştirir. Bu yaklaşım, Oyuncu sınıfının iç durumundan bağımsızdır. sağlık veya silahlar değişirse, saldır metodu değiştirilmesine gerek kalmaz. Bu da kodun daha sürdürülebilir ve daha kolay anlaşılır olmasını sağlar.

Sonuç olarak, “Tell, Don’t Ask” prensibi, nesnelerin iç durumlarına doğrudan erişmek yerine, nesnelere ne yapmaları gerektiğini söylememizi önerir. Bu yaklaşım, daha temiz, sürdürülebilir, test edilebilir ve daha anlaşılır kod yazılmasına yardımcı olur. Bu prensibi uygulayarak, daha sağlam ve ölçeklenebilir yazılımlar geliştirebilirsiniz. Daha fazla bilgi için fatihsoysal.com adresini ziyaret edebilirsiniz. Ayrıca, konuyla ilgili daha detaylı bilgi için bu İngilizce makaleye de göz atabilirsiniz.

#Etiketler
Tell Don’t Ask, Nesne Yönelimli Programlama, OOP, Tasarım Prensipleri, Yazılım Geliştirme, Temiz Kod, Sürdürülebilir Kod, Test Edilebilir Kod, Fatih Soysal


Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Gönder

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.
Mobil sürümden çık