C# 9.0 – Top-Level Statements
Merhaba,
Bir dilin gücünü gösteren birçok faktör vardır. Yer yer bu güç ayrımını ihtiyaçlar belirlerken, bazı dönemler popüler ihtiyaçları(veri madenciliği, yapay zeka vs.) karşılayabilen diller bu özellikleriyle kendilerini daha güçlü şekilde kulvarlara sunabilmektedirler. Sanırım bu ölçütler arasında birde dildeki kod estetiği, dilin gücüne katkıda bulunmakta ve semantik açıdan sadelik dilin yaygın olmasını sağlayan nitelik olarak karşımıza çıkmaktadır 🙂 Sözgelimi, Python dilini ele alırsak eğer makrodan mikroya geliştirilen herhangi bir kodunda ne scope ne de noktalı virgül gibi ekstra aparatlar barındırmaksızın, direkt olarak sade ve temiz kod akışıyla inşa edildiğini gözlemlemekteyiz. Python için tercih edilebilirliği destekleyen ve bir güç olarak nitelendirilebilen bu avantajı muhtemelen C#’da örnek almakta ve C# 9.0 sürümünde top-level statements özelliğiyle süslü parantezlerden kurtulmanın ilk adımını atmış bulunmaktadır.
Peki nedir bu top-level statements?
Genellikle bir kod parçasını denemek, test etmek yahut basit bir uygulama geliştirmek için hızlıca bir Console uygulaması üzerinden hareket ederiz. Lakin yapacağımız işlem her ne kadar basit olursa olsun iki satır kod yazabilmek için bir Main metodu tanımlamamız ve gerekli çalışmayı o metot içerisinde yapmamız gerekmektedir. Evet, Visual Studio uygulamayı oluşturur oluşturmaz karşımıza hazır bir Main fonksiyonu sunmaktadır. Tamam! Bilenler ve koda aşina olanlar için sıkıntı yok 🙂 Lakin yeni başlayanlar ya da bu alanda acemi olup iki duble kodun tadına bakayım diyenler için bu durumun ne kadar külfet olduğunu ben deniz eğitimlerimde çok açık ve net görmüş bulunmaktayım. Hatta, biz tecrübeli yazılımcılar için bile iki satırlık bir test koduna karşılık onlarca scope, class ve Main koduna maruz kalmamızda insan hakları açısından savunulabilir bir argüman olsa gerek 🙂
Yani anlayacağınız basit bir kod yazabilmek için bu güne kadar olması gereken temel basmakalıp(boilerplate) kodun olması C# açısından biraz bağlayıcı bir durum oluşturuyordu. C# 9.0’da bu durum değerlendirilerek üst düzey bir hale getirildi ve bu boilerplate kodlara gerek duymaksızın direkt yapılacak işleme odaklanabilmemiz hedeflendi ve top-level statements özelliği geliştirildi.
Misal, aşağıdaki gibi ekrana ‘Merhaba’ çıktısı verecek olan kodu;
using System; namespace CSharpNine { class Program { static void Main(string[] args) { Console.WriteLine("Merhaba"); } } }
bu şekilde yazmaktansa direkt olarak;
using System; Console.WriteLine("Merhaba");
yazmamızı sağlamaktadır.
Top-level statements özelliği yapısal olarak, varsa namespace yahut class ile using blokları arasında geçerlidir. Bu durumu daha da netleştirmek için aşağıdaki görselleri inceleyebilirsiniz.
|✓||✓||✗|
Top-level statements özelliği, programın işletim sistemiyle ilişkisini kuran Main metodunu(yani başlangıç noktasını) kaldırmamıza müsaade ettiği için doğal olarak aklınıza ‘Peki işletim sistemi haberleşeceği başlangıç noktasını nereden bilecek?’ sorusunu getirebilir. El cevap olarak dosya isminden… Yani işletim sistemi uygulama içerisinde ‘Program.cs’ isimli bir dosya arayacak ve içerisinde Main fonksiyonuna gerek kalmaksızın yukarıda da bahsedildiği gibi namespace yahut class ile using blokları arasındaki kodları işleyecektir. Haliyle bu yeniliğin bu özellik sayesinde bir tek ‘Program.cs’ dosyasına özel olduğu ve her istenilen dosyada kullanılabileceği anlamına gelmediğini buradan çıkarabilmekteyiz.
Ve son olarak;
Top-level statements özelliği microservis uygulamalarda servis gelişimi açısından hız kazandırıcı bir niteliğe sahiptir.
şeklinde bir bakış açısı sergileyerek içeriğimizi burada noktalayalım.
İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…