.NET ya da başka diğer geliştirme ortamlarında kullandığımız diller gerek ihtiyaçlardan gerek diğer dillerdeki gelişmelerden etkilenerek zaman içerisinde ya radikal değişikliklere ya da geliştiricinin daha kolay bir şekilde kod yazabilmesi için eklentilerle gelişme sürecini yaşarlar. 70 lerde geliştirilen C bile zaman içerisinde gelişim gösterebilmekte ve yanılmıyorsam en son 99 standartları ile de eklentiler yapılmıştır. C# kullanarak uygulama geliştiren programcılar 8 9 yıllık süreçte c# dilinin 1.0 ,1.1, 2.0 ve 3.0 sürümlerini kullanmışlardır. Bu yazıyı okuyanlardan birisi hala 1.1 veya 1.0 ile uygulama geliştiriyorsa nedenlerini bizimle paylaşırlarsa sevinirim. Acaba neden hala 2.0 ve üstü bir sürümü ile kodlama yapmıyorlar.
Gerek eğitim ve seminerlerde gerek dost sohbetlerinde bu yeniliklerin programcı tarafından kolay bir şekilde kabullenilemediğini görmekteyim .Oysaki bu yeniliklerin bir çoğu programıcının kolay bir şekilde kodlama yapabilmesi (mesela generics) ya da dilin imkanları ile kodlama yapıldığında yaşanan sorunların (örneğin nullable tipler ) aşılması için dile kazandırılmıştır. Oysa ilk gelen cevap " ben bu yenilik olmadan da ben zaten yapabiliyordum, ne gerek var ki bu yenilikleri öğrenmek için harcadığım performansa ya da zamana" şeklindedir. Tamamen karşı olduğumu belirterek bir örnek üzerinden açıklamaya çalışacağım.
Azçok haberimiz vardır c# 3.0 ile birlikte gelen Lambda ifadelerinden. Çok zor anlaşılan ve kullanılmak istenmeyen kullanma ihtiyacını bile düşünmek istemeyen (mesela bir düşünün) birçok meslektalım olduğuna eminim ;) Oysaki uyuglama geliştirirken yerinde kullanıldığında mükemmel derecede temiz ve anlamlı kodlama yapılabiliyor. Şimdi c# dili ile farklı yollardan çok basit bir şekilde generic List<T> nesnesinin belirtilen şekilde taşıdığı değerleri filitrelemeye çalışalım.(sıfırdan büyük olan sayıları bulsun)
Ilk akla gelen foreach ile listeyi dönerek filitrelemek olacaktır.
Bu örnekle anlatmak istediğim aslında kullanılan dilin yeniliklerini kullanmadan da sorunlara çözüm bulunabilineceği gibi gelen yenilikleri öğrenerek aslında daha az zaman alıcı ve temiz kodlar yazabileceğimizi, bu nedenle öncelikle gelen bu yeniliklerin ne işe yaradığını ne amaçla dile eklendiğini ve bu özellik olmadan yaşanan zorluklar ya da sorunların neler olduğunu iyice kavramak gerektiğini düşünüyorum. Yoksa kullanması zaten kolay! ;)
C# 4.0 'ın resmi olarak yayınlanmasından sonra bu konu hakkında tekrar konuşalım.
Remember Me