Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

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.

C# 9.0 - Top-Level Statements C# 9.0 - Top-Level Statements C# 9.0 - Top-Level Statements

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.

C# 9.0 - Top-Level Statements

Ha eğer çok zorlar ve birden fazla yerde top-level statements kullanmaya kalkılırsa bu hatayla karşılaşılacaktır…

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…

Bunlar da hoşunuza gidebilir...

3 Cevaplar

  1. 06 Aralık 2021

    […] Yukarıdaki ekran görüntüsünü incelerseniz eğer .NET 6’da konfigürasyon açısından Top-Level Statements‘in baz alındığı ve böylece uygulamada lüzumsuz kod kalabalığından sıyrılmanın […]

  2. 11 Aralık 2021

    […] yerine tüm bootstrap yapılanması ‘Program.cs’ üzerinde geliştirilmekte ve Top-Level Statements, Implicit Using vs. gibi çeşitli güncellemeler eşliğinde uygulamanın başlangıcı hem […]

  3. 26 Aralık 2021

    […] bu duruma C#, 9.0 versiyonu ile uyanmakta ve büyük farkı yaratabilmek için Top-Level Statements özelliğiyle sadeleştirme devriminin ilk adımını […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir