Generic repository zaten bir antipattern’dir (IRepository, RepositoryBase, T’li T’siz, hepsi.). Her Business Object aynı şemayı implement etmeye zorlanırsa onları farklı yapmanın anlamı yoktur. DataSet, DataTable ile aynı hesaba çıkar. CRUD için ortaya çıkmış kısa vadede faydalı ama scale olmayan bir yapıdır.

Ama Repository pattern’i eleştirirken testability’den de bahsetmelisiniz. Arada bir Repository olmadan direk bir ORM’nin spesifik tiplerine (dbcontext, iqueryable vs.) bağladığınızda veri erişimi yapan binlerce üst yapınızı ya hiç test edemez ya da çok ama çok kötü unit testing pratikleri uygulamak zorunda kalırsınız. Dbcontext gibi HttpContext gibi adı üzerinde tüm bağlamın bilgisini tutan (burada bağlam bütün! database) nesneleri sahtelemek çok zordur. Sahteleme kolay olmadan unit testing olamaz. Unit testing olmadan iyi mimari olamaz. Günümüzde MVC, MMVM, MVP gibi mimariler test edilebilirliği UI, API seviyesine taşımak için IActionResult gibi şeyler uydurmaya çalışırken Repository’den vazgeçmek bir adım ileri iki adım geri atmak gibi olur. Performans için en iyisi C yazmak.

Written by

Yazılımcı, rockçı, okuyucu, bilim meraklısı, phd adayı. www.gokhanercan.com

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store