Extension Methods¶
Extension methods, mevcut sınıflara veya arabirimlere yeni metotlar eklemenin etkili bir yoludur. Ancak, yanlış kullanım durumları kodun anlaşılabilirliğini ve bakımını zorlaştırabilir.
1. Extension Methodları Yanlış Kapsamda Kullanmak¶
❌ Yanlış Kullanım: Extension method’ları gereksiz yere genel (global
) hale getirmek.
public static class GlobalExtensions
{
public static string ToUpperCase(this string input) => input.ToUpper();
}
✅ İdeal Kullanım: Extension method’ları belirli bir bağlam veya amaca yönelik kapsama sınırlayın.
public static class StringExtensions
{
public static string ToUpperCase(this string input) => input.ToUpper();
}
2. Extension Methodları Yanlış Şekilde Adlandırmak¶
❌ Yanlış Kullanım: Extension method’lara anlamlı olmayan isimler vermek.
public static string Func(this string input) => input.ToUpper();
✅ İdeal Kullanım: Extension method’lara anlamlı ve açıklayıcı isimler verin.
public static string ToUpperCase(this string input) => input.ToUpper();
3. Extension Methodlarda Gereksiz Kontroller¶
❌ Yanlış Kullanım: Gerekli olmayan null kontrolleri yapmak.
public static string SafeToUpperCase(this string input)
{
if (input == null) return string.Empty;
return input.ToUpper();
}
✅ İdeal Kullanım: Gereksiz kontrollerden kaçının ve kullanıcıyı yönlendirin.
public static string ToUpperCase(this string input) => input?.ToUpper() ?? throw new ArgumentNullException(nameof(input));
4. Gereksiz Parametreler Kullanmak¶
❌ Yanlış Kullanım: Extension method’da gereksiz ek parametreler kullanmak.
public static string AppendSuffix(this string input, string suffix)
{
return input + suffix;
}
✅ İdeal Kullanım: Gereksiz parametrelerden kaçının.
public static string AppendSuffix(this string input, string suffix = "Default")
{
return input + suffix;
}
5. Extension Methodları Karmaşık Hale Getirmek¶
❌ Yanlış Kullanım: Çok fazla işlevselliği tek bir extension method’da birleştirmek.
public static string TransformText(this string input, bool toUpper, bool addSuffix)
{
var result = input;
if (toUpper) result = result.ToUpper();
if (addSuffix) result += "_Suffix";
return result;
}
✅ İdeal Kullanım: İşlevleri birden fazla extension method’a bölün.
public static string ToUpperCase(this string input) => input.ToUpper();
public static string AddSuffix(this string input, string suffix) => input + suffix;
6. Extension Methodların Kullanımını Belgelememek¶
❌ Yanlış Kullanım: Extension method’ların nasıl kullanılacağını açıklamamak.
public static string AddPrefix(this string input, string prefix)
{
return prefix + input;
}
✅ İdeal Kullanım: Extension method’ların kullanımını yorumlarla açıklayın.
/// <summary>
/// Belirtilen metnin başına bir önek ekler.
/// </summary>
/// <param name="input">Orijinal metin.</param>
/// <param name="prefix">Eklenecek önek.</param>
/// <returns>Önek eklenmiş metin.</returns>
public static string AddPrefix(this string input, string prefix)
{
return prefix + input;
}