Data Vinci 1: Dependency Injection

“Chicken translation” yani “mot a mot”  yani “birebir” çeviri yaptığımız zaman. “Bağımlılık enjekte”si gibi bir çeviri çıkıyor. Yani? Ver morfini damardan “keş” olsun çıksın program bu mu olayımız?

Tabi ki değil. Bağımlılık uygulamalarda istenilen bir şey değil. Hoş hiç bir bağımlılık da bilinçli olarak istenmiyordur. Güzel uygulama dediğin başına buyruk nereye koysan çatır çatır çalışandır. Peki o zaman nedir “Dependency injection”?

Yazılım geliştirme yaklaşımlardan birisi uygulamanın bileşenlerinin “gevşek bağlı” olmasıdır. Zaman içerisinde değişen isteklere, uygulamanın cevap verebilmesidir.  Bu bağlamda yazılım tasarlanırken mümkün mertebe yazdığımız kodları “kapsülleyip(encapsulation)” birbirlerinin ne iş yaptığından çok haberdar olmayan bir yapı kurmak gerekmektedir. Bunu yapabilmek için bir takım yöntemler izlenir: Abstraction, Interface yapısı bunların en bilinen ve sık kullanılanları.  Zaman içerisinde değişecek modelleriniz olduğunu düşünüyorsanız bunları asla “concrete” olarak tanımlamamanız gerekir. Bunun yerine interface olarak bir tanım yapıp, değişiklik olan kısımlarını da bu interface’den türeterek implemantasyon yapmak daha doğru olacaktır.

Yazılım geliştirme mottolarınızdan birisi “interface’i programla, implemantasyonu değil” olmalıdır.

Dependency Injection, kendi kurguladığınız yapıyla oluşturulabileceği gibi. Bu amaç için yazılmış kütüphaneleri kullanarak da yapılabilir. Bunların en öne çıkan ve bilinenler şunlar:

Eğer kodlarınızın test edilebilmesi kolaylaştırmak istiyorsanız bu tarz bir yapı kurgulayabilirsiniz veya uygulayabilirsiniz. Bu “mindset” içerisinde yer alan terimlerinden birisi de “IoC(Inversion of Control)”  birbirlerine karışmakta, yazılımcı dimağlarda rahatsızlık yaratmaktadır. Bu başlığa ilerleyen yazılarda değineceğim.

keep_calm

8 Comments

Add a Comment

Your email address will not be published. Required fields are marked *