Sobes.tech
Junior — Middle

Bağımlılıkların tersine çevrilmesi, kodun test edilme sürecini nasıl kolaylaştırır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Bağımlılıkların Ters Çevirisi İlkesi (Dependency Inversion Principle), yüksek seviyeli mantığın bağımlılıkların somut uygulamalarından ayrılmasını sağlar ve bunları soyutlamalar (örneğin, arayüzler) ile değiştirir. Bu, testleri kolaylaştırır çünkü testlerde gerçek bağımlılıkların yerine taklitler veya sahte nesneler kullanılabilir ve bu, test edilen kodu değiştirmeden yapılabilir.

C# örneği:

public interface ILogger
{
    void Log(string message);
}

public class FileLogger : ILogger
{
    public void Log(string message) { /* dosyaya yazma */ }
}

public class UserService
{
    private readonly ILogger _logger;
    public UserService(ILogger logger)
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // kullanıcı oluşturma mantığı
        _logger.Log($"Kullanıcı {name} oluşturuldu");
    }
}

// Testlerde, bir Mock ILogger geçilebilir:
public class MockLogger : ILogger
{
    public List<string> Messages = new List<string>();
    public void Log(string message) => Messages.Add(message);
}

Bu şekilde, testler gerçek uygulamalardan bağımsızdır ve mantık izole edilerek kontrol edilebilir.