5 adet yorum aldı

Elveda C#, Ben Gidiyorum

M. Baykal, 28 Eylül 2008 saat 05:58'de yazdı.

Kategoriler: C#, Microsoft, Visual Basic

Bir sevgi nasıl başlar? Bir tutku nasıl oluşur? Bunların hiç birinin cevabını bilmiyorum. Eminim, sende bilmiyorsundur.

Seni, sen daha doğmadan önce de tanıyordum. Sen daha doğmadan önce, ebveynlerin sana yoldaş arıyordu. Hepsinden önce seni öğrenmeye başlayanlar ve bilenler vardı. Her beklenen şey gibi senin de doğumun gecikti, ama derleyicilerin ilk çalıstığı zaman, gözleri parladı seni bekleyenlerin…

Dünya hala, insan kopyalamanın etiğini tartışıyordu. Oysa, programcıların bunu çoktan çözmüştü sanki, çünkü sen bizi şüphelendirecek kadar diğerlerine benziyordun. Sanki aşırı gelişmiş bir Java’ydın. Neye uğradığını şaşırmış bir Visual Basic’tin. Babana da benziyordun…

Senin dünyanda herşey çok toz pembeydi C#. Görünüşün karizmatikti ve derleyicin güvenliydi. O kadar büyük bir parlamayla gelmiştin ki gözlerimiz kamaşmıştı. Hepimiz, eskii sevdiklerimize arkamızı dönüp tüm satırları sana yazmaya başlamıştık.

Tüm mutluluğu seninle yaşıyorduk, tüm yenilikleri seninle yaşıyorduk. Seninle sabahlıyor, seninle geceliyorduk.

Hoşçakal C#, ben gidiyorum. Tüm o makyajın altında gerçekleri bugün farkettim. Şimdi, eski tutkuma döneceğim, beni kabul etmesi için yalvaracağım.

Elveda C#, ben gidiyorum. O gün yüz üstü bıraktığım Visual Basic’e dönüyorum. Çünkü o, daha anlayışlı. Çünkü o, senin olduğnu idda ettiğin şey, her zaman da öyleydi. Sen ne ondan daha hızlısın, ne daha güvenlisin, ne daha rahatsın, ne daha okunabilirsin, ne de daha güzelsin.

Ben, yeni bir şeyi ilk defa anlatırken beni yarım saat yerine üç-beş dakika da anlayabilecek olan Visual Basic’e dönüyorum.

Hoşçakal C#, ben gidiyorum ve noktalı virgüllerin sende kalsın…


2 kişi tarafından 4.0 olarak değerlendirildi

  • Currently 4/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Yorum Yaz

Daha Okunabilir LINQ Sorguları

M. Baykal, 23 Eylül 2008 saat 14:34'de yazdı.

Kategoriler: C#

Aşağıda ki gibi bir Xml dosyasından LINQ ile bilgi çekmemiz gerektiğini düşünelim.

<sehirler>
  <sehir>
    <bilgi turu="adi">Istanbul</bilgi>
    <bilgi turu="nufusu">20000000</bilgi>
    <bilgi turu="plaka">34</bilgi>
    <bilgi turu="ilkodu">212</bilgi>
    <bilgi turu="bolge">Marmara</bilgi>
  </sehir>
   …
</sehirler>

Bu dosyadan sehirleri çekmek isteseydik, aşağıdaki gibi kod yazardık.

var sehirler =
    from i in document.Descendants("sehir")
    select new
    {
        Adi = i.Elements("bilgi")
         .Where(x => x.Attribute("turu").Value == "adi")
         .First().Value,

        Nufusu = int.Parse(i.Elements("bilgi")
         .Where(x => x.Attribute("turu").Value == "nufusu")
         .First().Value),

        Plaka = int.Parse(i.Elements("bilgi")
         .Where(x => x.Attribute("turu").Value == "plaka")
         .First().Value),

        TelefonKodu = int.Parse(i.Elements("bilgi")
          .Where(x => x.Attribute("turu").Value == "ilkodu")
          .First().Value),

        Bolge = i.Elements("bilgi")
          .Where(x => x.Attribute("turu").Value == "bolge")
          .First().Value
    };

Peki, bu kodda yanlıs olan nedir? Sizce de okunabilirlik açısından berbat bir kod değil mi? Peki bunu nasıl daha okunabılır hale getirirdik? .Net 3.0 gelen Extensıon Method’ları kullanarak bu kodu biraz daha okunabilir hale getirebiliriz.

public static XElement Field(this XElement element, string fieldName)
{
    return element.Elements("bilgi")
        .Where(x => x.Attribute("turu").Value == fieldName)
        .First();
}

Yukarıda ki gibi bir uzantı metodu yazılınca yukarıda ki karmaşık LINQ kodu, aşağıdakine dönüşüyor.

var sehirler =
    from i in document.Descendants("sehir")
    select new
    {
        Adi = i.Field("adi").Value,
        Nufusu = int.Parse(i.Field("nufusu").Value),
        Plaka = int.Parse(i.Field("plaka").Value),
        TelefonKodu = int.Parse(i.Field("ilkodu").Value),
        Bolge = i.Field("bolge").Value
    };

Gördüğünüz gibi bu kullanım daha basit ve okunabilir. (Aynı zamanda kısa!)

Örnek kodlar:


Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


2 adet yorum aldı

Gubidik Toplayıcı – Abudik Çarpıcı

M. Baykal, 11 Eylül 2008 saat 07:11'de yazdı.

Kategoriler: C#

Bu nasıl başlıktır bende anlamadım ama; burada verceğim örneğin adıyla uyumlu olsun istedim. Son iki senedir yazmak istediğim ama bir türlü yazmaya başlayamadığım bir kod vardı. Bugün itibariyle onun yarısını yazmıs bulunuyorum. Önce sorunu anlatayım.

Sizin de bildiğiniz gibi, programlama dillerinde sayıları saklamak için kullandığımız değişkenler vardır. Ne yazıkkı bu değişkenlerin de sınırları vardır. Eski zamanlardan birinde yazdığım bir programda çok uzun sayıları toplamam gerekmişti, benimde aklıma birazdan anlatacağım yöntemi kullanmak gelmişti; ama üşendiğimden, programa bir türlü devam edememiştim. Soruna, gelince 500 basamaklı iki tam sayıyı kayıpsız olarak nasıl toplar, çıkartırdık ya da çarpardık? 

Bunuö internette baya bir araştırmıştımö yazılan yöntemler çok karmaşıktı. Peki neden bilgisayara toplamayı ve çıkarmayı yeniden öğretmeyeydik ki? Bilgisayar da pekala komşudan bir onluk alabilirdi.

Evet fark etmiş olabileceğiniz gibi, bilgisayarın toplama yapmak için insanların yöntemini taklit etmesini sağlamaktı amacım. Yani 1254 ile 349'u toplarken,

   1254
+  349

*********
    1603

Bulmak için:

    4, 5 daha: 13. 3'ü yazıyoruz Elde var 1
    5, 4 daha: 9 elde de 1 vardı, 10. 0'ı yazıyoruz, elde var 1
    2, 3 daha: 5 elde de 1 vardı, 6. 6'yı yazıyoruz
    1, aşağı iner. Sonuc: 1603.

Gibi bir işlem işlemesini ve çıkartırken de,

1254
- 349
*********
  905

Bulmak için:

    4'ten 9 çıkmaz, ayşe teyzeden bir elme borç aldık, 14'ten 9 çıktı, kalan 5

    Ayşe teyze bir elmasını komşuya vermişti, 4'ten 4 çıktı, kalan 0
    2'den 3 çıkmaz, komşudan bir elma aldık, 12 den 3 çıktı, kalan 9.
    Komşuda elma bitti, sonuc: 905.

Şeklinde sonucu bulmaktı. Bunu bu kadar basit bir halde yazayım dedım ve yazdım. Kodları buradan indirebilirsiniz. İftardan sonra da inşallah, bunu sınıflaştıracağım.

Yakın zamanda çarpma ve bölmeyi de uygular ve yayınlarım.

Gubidik Toplayıcı, Abidik Çarpıcı

Gubidik toplayıcı artık, çarpıyorda!

 

Ekler:


Bu yazıyı ilk değerlendiren siz olun

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5



  Günlüğümden bır yazıyı alıntılamadan önce, telif bilgilerini okuyun...

Telif Bilgileri

Son 3 Yazım

Etiket Bulutu

Son 5 Yorum

Comment RSS
Bu sitenin tüm içeriği, yazarinin görüşlerini yansıtmaktadır. Başka hiçbir kurumu ya da kuruluşu bağlamaz.
Site ve içeriğinin içeriğinin her hakkı Muhammed Medeni Baykal'a aittir, kaynak gösterilmek şartı ile alıntı yapılabilir.
Bu döküman en iyi, Internet Explorer 8 Beta 2 ile izlenir. Fırefox 3.0 ile de izlenebilir...
Bu site BlogEngine.NET ile gücüne güç katıyor.