Clean Code in C#: Prinzipien und Beispiele für .NET-Entwickler

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Clean Code in C#: Prinzipien und Beispiele in der Praxis



Clean Code ist nicht nur ein modischer Begriff, sondern eine grundlegende Fähigkeit eines professionellen Entwicklers. Im .NET- und C#-Ökosystem, wo Projekte oft über Jahre leben und von Dutzenden Programmierern gewartet werden, wird die Fähigkeit, verständlichen und leicht änderbaren Code zu schreiben, entscheidend. In diesem Artikel analysieren wir die wichtigsten Prinzipien von Clean Code in Bezug auf C# und betrachten konkrete Anwendungsbeispiele.



Warum ist Clean Code in C# wichtig?

C# ist eine streng typisierte, objektorientierte Sprache mit einem reichhaltigen Ökosystem. Ihre Stärke kann jedoch in Chaos umschlagen, wenn man nicht diszipliniert vorgeht. Clean Code reduziert die Anzahl der Fehler, beschleunigt das Onboarding neuer Entwickler und senkt die Wartungskosten. Wie Robert Martin sagte: „Der einzige Weg, schnell Code zu schreiben, ist, ihn gut zu schreiben.“



Prinzip 1: Aussagekräftige Namen

Namen von Variablen, Methoden und Klassen sollten die Absicht offenbaren. Sparen Sie keine Zeichen – schlechter Code erfordert mehr Zeit zum Verstehen.



Schlechtes Beispiel

int d; // Zeit seit der ÄnderungList<int> lst = new List<int>();void Proc(int a, int b) { ... }


Gutes Beispiel (Clean Code)

int elapsedTimeInDays;List<int> customerIds = new List<int>();void CalculateDiscount(decimal basePrice, decimal taxRate) { ... }


Regel: Wenn ein Name einen Kommentar erfordert, ist er schlecht. Verwenden Sie camelCase für Variablen und PascalCase für Methoden und Klassen.



Prinzip 2: Kleine Funktionen (SRP auf Methodenebene)

Jede Funktion sollte genau eine Sache tun und diese gut machen. Wenn eine Methode mehr als 20-30 Zeilen enthält oder eine Verschachtelung von mehr als zwei Ebenen aufweist, ist dies ein Signal zum Refactoring.



Schlechtes Beispiel: Taschenmesser-Funktion

public void ProcessOrder(Order order){    // Validierung    if (order == null || order.Items.Count == 0)        throw new ArgumentException("Ungültige Bestellung");

// Rabattberechnung decimal discount = 0; if (order.Total > 1000) discount = 0.1m; else if (order.Total > 500) discount = 0.05m;

// Speichern in der DB using var db = new AppDbContext(); db.Orders.Add(order); db.SaveChanges();

// E-Mail senden SendEmail(order.CustomerEmail, "Bestellung erhalten");}


Gutes Beispiel: Aufteilung der Verantwortlichkeiten

public void ProcessOrder(Order order){    Validate(order);    var discount = CalculateDiscount(order.Total);    ApplyDiscount(order, discount);    SaveOrder(order);    SendConfirmationEmail(order);}

private void Validate(Order order){ if (order == null || order.Items.Count == 0) throw new ArgumentException("Ungültige Bestellung");}

private decimal CalculateDiscount(decimal total){ if (total > 1000) return 0.1m; if (total > 500) return 0.05m; return 0;}

private void SaveOrder(Order order){ using var db = new AppDbContext(); db.Orders.Add(order); db.SaveChanges();}


Prinzip 3: Doppelungen vermeiden (DRY)

Sich wiederholender Code ist die Wurzel allen Übels. Wenn Sie einen Codeblock mehr als einmal kopieren, extrahieren Sie ihn in eine Methode oder Klasse.



Beispiel: Doppelte Logik

// Im Benutzer-Controllerif (user.Role == "Admin" || user.Role == "Manager")    GrantAccess();

// Im Berichts-Controllerif (user.Role == "Admin" || user.Role == "Manager") ShowReport();


Refactoring: Kapselung der Prüfung

public static class UserExtensions{    public static bool HasElevatedPermissions(this User user)    {        return user.Role == "Admin" || user.Role == "Manager";    }}

// Verwendungif (user.HasElevatedPermissions()) GrantAccess();


Prinzip 4: Kommentare sind böse (außer und

Blogs

Buchempfehlungen