»
Y
A
N
M
E
N
Ü
«
Operator Overloading kod okunurluğunu düşürür mü?
ibrahim dursun @ 11 Ekim 2007 23:39

Javada operator overloading yok. Baya bir süre neden koymuyorlar diye merak etmiştim, hatta bir yerde operator overloading’in kodun okunurluğunu azaltacağı için Sun’ın bu özelliği eklemeye sıcak bakmadığını okumuştum. O zaman da saçma gelmişti, şimdi de. Ne yani? Bir yerimizi keseriz diye evde hiç bıçak bulundurmayalım mı?

Elbette fütursuzca kullanıldığında kodun okunurluğunu düşürür fakat inanılmaz derecede arttıracağı yerler de yok değil.

.Net için Entity Spaces adında veritabanı katmanı var. NHibernate‘in aksine bu katman hiç reflection kullanmıyor, onun yerine veritabanı şablonuna göre kod oluşturuyor. Böylece xml ayar dosyalarıyla uğraşmıyorsunuz ve oldukça iyi performans elde ediyorsunuz. İşin en güzel yanı ise kod içindeki sorgular aynen bir SQL sorgusu gibi görünüyor ve okunurluğu arttırıyor. Peki bunu nasıl yapıyor? Operator Overloading ile…

CustomerQuery cust = new CustomerQuery("c");
OrderQuery order = new OrderQuery("o");
OrderItemQuery item = new OrderItemQuery("oi");

cust.Select(cust.CustomerName, (item.Quantity * item.UnitPrice).Sum().As("TotalSales")); cust.InnerJoin(order).On(order.CustID == cust.CustomerID); cust.InnerJoin(item).On(item.OrderID == order.OrderID); cust.GroupBy(cust.CustomerName); cust.OrderBy("TotalSales", esOrderByDirection.Descending);

CustomerCollection coll = new CustomerCollection(); coll.Load(cust);

Matematikteki en kolay ispat yöntemini kullanmış olduk. Proof by counter example.


2 Yorum  
Muhammed Tahiroğlu
26 Kasım 2007 21:46

Efendim, Entity Spaces’in yaptığı çok güzel. Ama onu tanıdığım için mutluyum; bu sözdizimsel yeniliği ilk defa iş arkadaşım uygulamıştı: http://anehir.blogspot.com/. Bunu yapmaya karar verdiğimizde Entity Spaces daha ilkel bir sürümdeydi. Abdullah kodu tamamladığında, bundan iyisi Linq olmuştu. Yine de Entity Spaces’i tebrik etmek lazım. Doğru bir noktaya gelmiş.

ibrahim dursun
26 Kasım 2007 23:58

Evet gerçekten güzel bir çalışma yapmış iş arkadaşınız. Yalnız EntitySpaces’in aslında “MyGeneration” diye bir atası varmış. Zamanının en popüler kod üreticisi ki zaten EntitSpaces bunun üzerine kurulmuş. İki yazılımı da geliştiren aynı kişi. Ben de EntitySpaces’i dotnetrocks.com dinlerken tanıdım. Gerçi kullanma fırsatım olmadı ama arkasındaki fikir gerçekten hoşuma gitmişti, o yüzden buraya taşıdım. Bence operatör overloading kullanmak için çok uygun bir senaryo.

Bir yorum bırakın

»  Substance: WordPress   »  Style: Ahren Ahimsa