C# 7 Lokal Fonksiyonlar / Local Functions

Lokal fonksiyonları, herhangi bir metod, bir sınıfın yapıcısı(constructor) olarak  veya bir property içinde tanımlayabiliriz. C# derleyicisi tarafından derlendiğinde ise private bir metod haline dönüştürülür.

702

Lokal fonksiyonları incelerken bir makalede benim gibi eskiyseniz “GOSUB” ifadesini bilirsiniz yazıyordu.O an bende açıkçası eskidiğimi anladım. Benim gibi Pascal’dan geliyorsanız “GOSUB” sizin için “GOTO” terimidir. Bu komutlar belirtilen işlemleri yapmanıza ve daha sonra o noktaya dönmenize izin verirdi. Mecbur kalınmadıkça da pekte kullanılması önerilmezdi. Tabii ki Lokal Fonksiyonlar bu değil. Çalışma mekanikleri ve mimarisel yapısı farklı olmakla birlikte benzer bir alan.

Lokal fonksiyonları, herhangi bir metod, bir sınıfın yapıcısı(constructor) olarak  veya bir property içinde tanımlayabiliriz. C# derleyicisi tarafından derlendiğinde ise private bir metod haline dönüşmektedir. Pascaldan bahis edince bende bir Pascal uygulaması koymak istedim.

Açıkçası uygulama geliştirilirken tekrar kullanılmayan yöntemler oluşturmamız gerekebiliyor. Bu yöntemlerde ileride bir kabus gibi üzerinize çökebiliyor. Bundan dolayıda yöntemlerin  uzun süre kullanılmasını istemeyebiliyoruz. Bununla birlikte, yeniden kullanılmayacak pek çok özel yöntemde kullanıyoruz. İşte bu noktada Lokal Fonksiyonların en güzel  avantajlarından biri sadece o işe özel bir metodu yaratmanız ve orada kullanılmasıdır. Ardınızdan gelecek olan programcıların farklı yerlerde bu metodu kullanmasının da önünü kesmiş olacaksınızdır. Tabii ki  kendi önünüzü de kesmiş olursunuz. Hadi birazda kod yazalım.

 

 

Şimdi, yukarıda verilen kod örneklerine bakalım. PopulateCustomer yöntemi bir dizi oluşturuyor. Dikkat ederseniz oluşturacağı dizinin büyüklüğünü içinde olduğu metodun tanımlarından alabiliyor.Lokal fonksiyonlar tanımlı oldukları metodların değişkenlerini kullanabilirler. Güzel bir özellik, değil mi?

Customer sınıfının ToString() Metodunu inceleyecek olursanız.  Bu kısımda da Lokal fonksiyonların nasıl kullanıldığını görebilirsiniz. Aynı işlemi get;set; kısmı içinde yapabilirdik. Customer sınıfı içinde bu kullanımıda görebilirsiniz.

Ben Lokal fonksiyonların servis ve asenkron dönüşlerde parametrelerin doğrulanması için kullanılmasının  iyi bir çözüm olduğunu düşünüyorum.

Kodlara github üzerinden erişebilirsiniz. https://github.com/kkulaoglu/Bilisim.io

Yorum yaz

Email adresiniz yayınlanmayacaktır.