Menu
Coddy logo textTech

İsimlendirilmiş Argümanlar

Coddy'nin C# Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası — ders 49 / 70.

Adlandırılmış bağımsız değişkenler, konuma güvenmek yerine ismini kullanarak hangi parametrenin bir değer alacağını belirtmenize olanak tanır. Bu, metot çağrılarını daha net hale getirir ve bağımsız değişkenleri herhangi bir sırayla iletmenize izin verir.

Değerden önce parametre adını ve ardından iki nokta üst üste kullanın:

public static void CreateUser(string name, int age, bool isActive)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

// Adlandırılmış argümanları kullanma
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // Herhangi bir sıralama çalışır

Adlandırılmış argümanlar, isteğe bağlı parametrelerle birleştirildiğinde oldukça kullanışlıdır. Önceki tüm isteğe bağlı değerleri sağlamak yerine, doğrudan ihtiyacınız olan değere atlayabilirsiniz:

public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
    Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}

// port ve useSSL'i atla, yalnızca timeout'u belirt
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Konumsal ve adlandırılmış bağımsız değişkenleri karıştırabilirsiniz, ancak konumsal bağımsız değişkenler önce gelmelidir. Adlandırılmış bağımsız değişkenler, özellikle aynı türden birden fazla parametreye sahip metotlar veya anlamın tek başına değerden anlaşılamadığı boolean bayrakları için okunabilirliği artırır.

challenge icon

Görev

Kolay

Metot çağrılarını kristal netliğinde hale getirmek için adlandırılmış argümanlardan (named arguments) yararlanan bir rapor oluşturucu inşa edelim. Metotların birden fazla parametresi olduğunda - özellikle aynı türden olanlar veya boolean bayrakları - adlandırılmış argümanlar kodunuzu kendi kendini belgeleyen (self-documenting) hale getirir.

Kodunuzu iki dosya halinde düzenleyeceksiniz:

  • ReportGenerator.cs: Reports ad alanı (namespace) içinde, birkaç isteğe bağlı parametreye sahip bir metoda sahip bir ReportGenerator sınıfı oluşturun:
    • GenerateReport(string title, string author = "Anonymous", bool includeHeader = true, bool includeSummary = false, int maxPages = 10)
    • Bu metot, rapor yapılandırmasını açıklayan biçimlendirilmiş bir dize döndürmelidir
    • Biçim: Report: {title} by {author} | Header: {Yes/No}, Summary: {Yes/No}, Max Pages: {maxPages}
  • Program.cs: Ana dosyanızda, GenerateReport metodunu farklı şekillerde çağırarak adlandırılmış argümanların gücünü gösterin - ihtiyacınız olmayan isteğe bağlı parametreleri atlayın ve her rapor için yalnızca önemli olanları belirtin.

Üç girdi alacaksınız:

  • Birinci rapor başlığı
  • İkinci rapor başlığı
  • Üçüncü rapor başlığı

Farklı yapılandırmalarla üç rapor oluşturun:

  1. Birinci rapor: Yalnızca başlığı kullanın (tüm varsayılanlar geçerlidir)
  2. İkinci rapor: Başlığı includeSummary: true ve maxPages: 25 ile kullanın (author ve includeHeader parametrelerini atlayarak varsayılanlarını koruyun)
  3. Üçüncü rapor: Başlığı author: "Admin", includeHeader: false ve includeSummary: true ile kullanın (maxPages varsayılanını koruyun)

Her rapor sonucunu kendi satırına yazdırın.

Örneğin, girdiler Sales Q1, Annual Review ve Inventory Check ise çıktı şu şekilde olmalıdır:

Report: Sales Q1 by Anonymous | Header: Yes, Summary: No, Max Pages: 10
Report: Annual Review by Anonymous | Header: Yes, Summary: Yes, Max Pages: 25
Report: Inventory Check by Admin | Header: No, Summary: Yes, Max Pages: 10

Adlandırılmış argümanların, ilgilendiğiniz parametrelere doğrudan atlamanıza nasıl izin verdiğine dikkat edin - sadece includeSummary parametresini değiştirmek için author veya includeHeader parametrelerini belirtmek zorunda değilsiniz. Bu, metot çağrılarınızı çok daha okunabilir ve niyetinizi belli eden hale getirir!

Kopya kağıdı

Adlandırılmış bağımsız değişkenler (named arguments), konuma güvenmek yerine adını kullanarak hangi parametrenin bir değer alacağını belirtmenize olanak tanır. Bu, metot çağrılarını daha net hale getirir ve bağımsız değişkenleri herhangi bir sırayla iletmenize izin verir.

Değerden önce parametre adını ve ardından iki nokta üst üste kullanın:

public static void CreateUser(string name, int age, bool isActive)
{
    Console.WriteLine($"{name}, Age: {age}, Active: {isActive}");
}

// Adlandırılmış bağımsız değişkenleri kullanma
CreateUser(name: "Alice", age: 25, isActive: true);
CreateUser(age: 30, isActive: false, name: "Bob");  // Herhangi bir sıra işe yarar

Adlandırılmış bağımsız değişkenler, isteğe bağlı parametrelerle (optional parameters) iyi çalışır. Önceki tüm isteğe bağlı değerleri sağlamadan doğrudan ihtiyacınız olan parametreye atlayabilirsiniz:

public static void Configure(string host, int port = 8080, bool useSSL = false, int timeout = 30)
{
    Console.WriteLine($"{host}:{port}, SSL: {useSSL}, Timeout: {timeout}");
}

// port ve useSSL'i atla, sadece timeout'u belirt
Configure("localhost", timeout: 60);
Configure("server.com", useSSL: true);

Konumsal (positional) ve adlandırılmış bağımsız değişkenleri karıştırabilirsiniz, ancak konumsal bağımsız değişkenler önce gelmelidir. Adlandırılmış bağımsız değişkenler, özellikle aynı türden birden fazla parametreye veya boolean bayraklara sahip metotlar için okunabilirliği artırır.

Kendin dene

using System;
using Reports;

class Program
{
    public static void Main(string[] args)
    {
        // Üç rapor başlığını oku
        string title1 = Console.ReadLine();
        string title2 = Console.ReadLine();
        string title3 = Console.ReadLine();

        // Bir ReportGenerator örneği oluştur
        ReportGenerator generator = new ReportGenerator();

        // TODO: İlk raporu oluştur - yalnızca başlığı kullan (tüm varsayılanlar geçerlidir)
        

        // TODO: İkinci raporu oluştur - başlığı includeSummary: true ve maxPages: 25 ile kullan
        // (author ve includeHeader kısımlarını atla, varsayılan değerlerini koru)
        

        // TODO: Üçüncü raporu oluştur - başlığı author: "Admin", includeHeader: false ve includeSummary: true ile kullan
        // (maxPages varsayılan değerini koru)
        

        // Her bir rapor sonucunu yazdır
    }
}
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler