Earn More by Sharing What You Love
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!

Tim Corey
44m 57s
Tim Corey, "C# Kodunuzu Basitleştirmenin 14 Yolu" başlıklı kapsamlı videosunda, kodun okunabilirliğini artıran, karmaşayı azaltan ve kod tabanını sürdürülebilir kılan pratik C# en iyi uygulamalarını inceliyor. Tim, tek satırlık çözümler veya anlaşılması güç hileler üzerinde durmak yerine, iyi kod yazma uygulamalarına odaklanır—diğer geliştiricilerin takip edebileceği temiz, anlaşılır kod nasıl yazılır.
Her ipucunu Visual Studio'daki gerçek örnekler etrafında şekillendiryor, isimlendirme kuralları, hata yönetimi ve kodu herhangi bir şeyi bozmadan nasıl yeniden yapılandıracağı hakkında da konuşuyor. Bu sadece teori değil—uygulama kodu daha iyi hale getirir.
Bu makalede, onun gösterdiği 14 yöntemin her birini adım adım inceleyelim.
Tim, statik erişimin tekrarlayan çağrıları nasıl basitleştirebileceğini göstererek başlar. Şunu beyan ederek:
using static System.Console;Imports System.ConsoleArtık her statik üyeyi Console ön eki ile yazmanız gerekmemektedir.
Bu, sadece kelimeleri çıkarmaktan daha fazlasıdır; statik erişimi net hale getirmekle ilgilidir. Tim, Console veya Math gibi sık kullanılan bir sınıfta tanımlanmış bir statik üyeyi çağırıyorsanız, bu kısayolun kod okunabilirliğini artırdığını belirtir.
Ancak, iyi kodlama uygulamalarının bir parçası olarak, geliştiricilerin çakışmalardan kaçınmaları gerektiği konusunda uyarıyor - iki farklı sınıf, statik bir üyeye aynı ismi verebilir. Olası beklenmedik davranışların farkında olmak önemlidir.
C#, artık listeleri daha doğrudan başlatmanızı sağlıyor:
List<string> names = ["Tim", "Sue", "Bilbo"];Dim names As New List(Of String) From {"Tim", "Sue", "Bilbo"}Tim, bunun her şeyi tek bir ifadeye sıkıştırmakla ilgili olmadığını, okuyup anlamayı kolaylaştırmak ve formaliteleri azaltarak performansı optimize etmek için kod yazmakla ilgili olduğunu açıklıyor.
"new List of String" şablonunu ayrıştırmak yerine, okuyucu koleksiyondaki açıklayıcı isimleri doğrudan görür. Tim ayrıca bunun diziler ve hatta sözlükler için de çalıştığını, netliği önceliklendiren kodlama gelenekleriyle uyumlu olduğunu belirtiyor.
Başka bir zaman tasarrufu sağlayan özellik: hedef-tipi yeni. Yerine:
List<int> numbers = new List<int>();Dim numbers As New List(Of Integer)()yazabilirsiniz:
List<int> numbers = new();Dim numbers As New List(Of Integer)()Tim, sınıf adının tekrarlanmasının gereksiz olduğunu vurguluyor—zaten sol tarafta yer alıyor. Bu, kod tabanınızı taramayı kolaylaştırırken fazlalığı ortadan kaldırarak iyi kodlama uygulamalarına uyar.
Tim, kodlama pratiği çevrelerinde tartışmalara yol açan bir özellik olan var'ı ele alıyor. Kimi, değişken adlarını ve türlerini gizlediği için bunu sevmez, ancak Tim, bunun gerçek gücünün anonim türlerde yattığını açıklar.
Veri kaynaklarıyla çalışırken (örneğin Dapper aracılığıyla SQL), Tim var'ın nasıl nesneler oluşturmanıza olanak tanıdığını gösteriyor:
var parameters = new { FirstName = "Tim", LastName = "Corey" };Dim parameters = New With {Key .FirstName = "Tim", Key .LastName = "Corey"}Bu, sorgular yazmak veya tek seferlik nesneler için mükemmeldir—sadece parametreler için bir temel sınıf oluşturmanız gerekmez. Tim'in dediği gibi, bu, gereksiz türlerle kod tabanınızı kirletmekten kaçınırken, bir şeyler ters gittiğinde anlamlı hata mesajları sağlamaya devam eder.
Tim bu ad alanlarının kapsamını dosya tabanlı hale getiriyor ve bunun nasıl olduğunu gösteriyor:
namespace ProjectName
{
// indented code
}Namespace ProjectName
' indented code
End Namespaceşuna dönüşür:
namespace ProjectName;Namespace ProjectName
End NamespaceBu küçük değişiklik, gereksiz girintileri ortadan kaldırır ve kamu üyeler için Pascal büyük harfle denilen C# adlandırma kurallarına uyar. Tim, çoğu dosyanın sadece bir tane namespace içerdiğini açıklayarak, bunun kodun okunabilirliğini artırdığını ve mantıksal bölümleri uyum içinde tuttuğunu belirtir.
Kayıtları kullanmak, veri nesnelerini sadece bir ifadede tanımlamanıza olanak tanır:
public record EmployeeRecord(int Id, string Name);Public Class EmployeeRecord
Public Property Id As Integer
Public Property Name As String
Public Sub New(id As Integer, name As String)
Me.Id = id
Me.Name = name
End Sub
End ClassTim, bunun minimum çaba ile kapsamlı bir tür (özellikler, değişmezlik ve ToString()) ürettiğini belirtir. Basit türev sınıf senaryolarının hâlâ sınıflara ihtiyaç duyduğunu açıkça belirtiyor, ancak nesneniz salt okunur olduğunda, kayıtlar tek sorumluluk ilkesini izleyerek tek bir işi iyi yapar.
Tim, desen eşlemenin nasıl istisnaları ele almanıza ve güvenli bir şekilde karşılaştırmalar yapmanıza yardımcı olduğunu gösteriyor. Detaylı tip kontrolü yazmak yerine, bunları birleştirebilirsiniz:
if (emp is EmployeeRecord e)
{
e.Id = 1;
}If TypeOf emp Is EmployeeRecord Then
Dim e As EmployeeRecord = DirectCast(emp, EmployeeRecord)
e.Id = 1
End IfBu tek satır kontrol eder ve dönüştürür. Tim, bunun iyi kodlama uygulamalarıyla uyumlu olduğunu söylüyor—x veya y gibi tek harfli değişken adlarından kaçınıyor ve bunun yerine e gibi açıklayıcı adlar veriyorsunuz. Açık yöntem adları ve değişken adları, diğer geliştiriciler için kodun bakımını kolaylaştırır.
Okunabilir dizeler oluşturmak için, Tim dize ara eklemeyi gösterir:
$"The employee with ID {e.Id} is {e.Name}"$"The employee with ID {e.Id} is {e.Name}"Bu durumun anlamlı hata mesajları ve yorum yazmayı kolaylaştırdığını belirtiyor. Karışık birleştirme yerine, İngilizce gibi okunan kod yazabilirsiniz—kod kalitesini artırır ve çıktı kontrol eden gelecekteki birim testlerini basitleştirir.
Tim, kodu yeniden yapılandırdığınızda nameof()'un sizi nasıl koruduğunu gösteriyor. String'lerdeki sabit kodlu değişken adları yeniden adlandırıldığında beklenmedik davranışlara yol açabilir. Ancak yazarak:
nameof(emp)NameOf(emp)derleyici her kullanımı otomatik olarak günceller. Bu, kod tabanınızı temiz yazarken ve yeniden düzenlerken sağlıklı tutan en iyi uygulamalardan biridir.
Tim, sadece iki değeri döndürmek için bir temel sınıf oluşturmak yerine, demetleri kullanır:
(string FirstName, string LastName) SplitName(string fullName)Function SplitName(fullName As String) As (FirstName As String, LastName As String)Bu, gereksiz dış bağımlılıklardan kaçınır ve tek sorumluluk ilkesine uyar—metot sadece bir ismi böler, başka bir şey yapmaz. Tim'in dediği gibi, aşırı mühendislikten kaçındığınızda pratik yapmak kodu daha iyi hale getirir.
Tim, demetler üzerinde çalışarak sonuçları yerel değişkenlere nasıl açığa çıkaracağını gösteriyor:
var (firstName, lastName) = SplitName("Tim Corey");Dim firstName As String
Dim lastName As String
(firstName, lastName) = SplitName("Tim Corey")Bu, değişken adlarını açıklayıcı tutar ve daha sonra karmaşık tuple sözdizimini önler. Tim, kullanılmayan değerleri atma konusuna bile değiniyor (kullanarak _), bu niyeti gösterir—açıklanmamış tek harfli değişken isimleri bırakılmaz.
Tim, tüm demet parçalarına ihtiyacınız yoksa yoksayıcıları öneriyor:
var (firstName, _) = SplitName("Tim Corey");Dim firstName As String
(firstName, _) = SplitName("Tim Corey")Bu, diğer geliştiricilere bir değeri kasıtlı olarak göz ardı ettiğinizi gösterir—bütün çıktılarının önemli olmadığı test framework'leri veya birim testlerinde iyi bir şeydir.
Tim, kaynak yönetimi ve hata işleme konularına geçiyor. Daha önce, yazardınız:
using (var connection = new SqlConnection(connString))
{
// work
}Using connection As New SqlConnection(connString)
' work
End UsingArtık kullanabilirsiniz:
using var connection = new SqlConnection(connString);Using connection As New SqlConnection(connString)Bu, SOLID prensipleriyle uyumludur—özellikle tek sorumluluk prensibi ve bağımlılık tersine çevirme prensibi ile. Tim, bu söz diziminin veritabanları gibi harici bağımlılıklar için iyi çalıştığını, çoğu hata yönetimini daha temiz hale getirdiğini ve bağlantıların her zaman kapatılmasını sağlayarak performans sorunlarını veya bağlantılar uygun şekilde sonlandırılmadığında meydana gelebilecek SQL enjeksiyon senaryolarını önlediğini belirtir.
Son olarak, Tim, ayrıştırma gibi işlemler için satır içi out değişken bildirilerini ele alıyor:
if (int.TryParse(numberText, out int numberValue))If Integer.TryParse(numberText, numberValue) ThenBurada, yerel değişkeni aynı satırda oluşturursunuz. Bu, kodlama kurallarını sıkı tutar ve yöntem adlarının açıklayıcı olmasını sağlar. Kodu düzgün bir şekilde gruplandırarak beklenmedik davranışları azaltır ve gelecekteki kod yeniden düzenleme çabalarını güvenli hale getirirsiniz.
Tim, izleyicilere hatırlatarak videosunu kapatıyor: bu basitleştirmeler, gizemli tek satırlık kodlar yazmakla ilgili değil, iyi kodlama uygulamalarıyla ilgilidir. Statik, kayıtlar, desen eşleme, tuple'lar ve yoksaymalar gibi özellikler, temiz ve modern bir C# yazmanıza olanak tanır.
Geliştiricileri, bu özellikleri benimserken adlandırma kuralları, hata yönetimi ve anlamlı adlar üzerine düşünmeye teşvik eder. "Kod, insanlar tarafından okunmak içindir," diyor Tim—ve anlaşılması kolay kod yazdığınızda, kendiniz ve diğer geliştiriciler için hayatı daha iyi hale getirirsiniz.
Kısacası: Bu C# en iyi uygulamalarını benimseyin, tek sorumluluk ilkesi, arayüz ayrımı ilkesi ve bağımlılık tersine çevirme ilkesi gibi SOLID prensiplerine uyun ve kodunuz sadece derlenmekle kalmayacak; performansı artıracak, beklenmedik davranışları azaltacak ve ekibinizi mutlu bir şekilde kodlamaya devam edecek.
Do you create content for developers working with .NET, C#, Java, Python, or Node.js? Turn your expertise into extra income!
Join our newsletter, you’ll get exclusive access on article updates. We value your privacy