Effektives C#: 50 Wege, Ihren C#-Code zu verbessern
Effektives C#: 50 Wege, Ihren C#-Code zu verbessern
Zusammenfassung:
Einleitung
Das Buch „Effektives C#: 50 Wege, Ihren C#-Code zu verbessern“ (Originaltitel Effective C#: 50 Specific Ways to Improve Your C#) von Bill Wagner ist nicht nur ein weiteres Nachschlagewerk zur Sprache. Es ist die konzentrierte Erfahrung eines der führenden Experten im .NET-Bereich, der über viele Jahre an der Entwicklung der C#-Standards beteiligt war und in den Sprachdesign-Gremien mitwirkte. Die dritte Auflage, erschienen im Jahr 2017, deckt die C#-Versionen bis einschließlich 7.0 ab und bietet 50 konkrete, in der Praxis bewährte Empfehlungen, die Entwicklern helfen, qualitativ hochwertigeren, leistungsfähigeren und wartbareren Code zu schreiben.
Das Buch richtet sich an diejenigen, die die Syntax von C# bereits beherrschen und die nächste Stufe erreichen möchten – von „einfach funktionierendem Code“ hin zu Code, der ein Beispiel für Professionalität ist. Es ist kein Lehrbuch für Anfänger, sondern eine Sammlung tiefgehender praktischer Ratschläge, die jeweils mit einer detaillierten Erklärung, Codebeispielen und einer Analyse der Zielkonflikte versehen sind.
Worum es in dem Buch geht
Das Buch ist in fünf thematische Teile gegliedert, die sich jeweils einem bestimmten Aspekt der C#-Entwicklung widmen:
- Grundlagen der Sprache (Item 1–10): Arbeit mit Eigenschaften, Methoden, Konstruktoren, Operatoren. Behandelt werden Fragen der idiomatischen Verwendung von C#, wie die Bevorzugung unveränderlicher Typen, die korrekte Verwendung von Eigenschaften anstelle von Feldern und Besonderheiten der Initialisierung.
- Entwurf auf Basis von .NET (Item 11–20): Prinzipien der Arbeit mit Interfaces, abstrakten Klassen, Delegaten und Ereignissen. Es wird erklärt, wann man Interfaces und wann Basisklassen verwenden sollte und wie man APIs richtig entwirft.
- Arbeit mit Ressourcen (Item 21–30): Speicherverwaltung, Garbage Collection, korrekte Verwendung von IDisposable, Finalizer und das Dispose-Muster. Dies ist ein kritisch wichtiger Teil für jeden, der mit nicht verwalteten Ressourcen arbeitet.
- LINQ und dynamische Programmierung (Item 31–40): Tiefer Einstieg in LINQ: von der effizienten Nutzung von Erweiterungsmethoden bis zum Verständnis der verzögerten Ausführung. Auch dynamische Typen und die Arbeit mit COM werden behandelt.
- Parallelität und Asynchronität (Item 41–50): Moderne Ansätze zur Multithreading: async/await, Task, Parallel LINQ, Concurrent Collections. Der Autor erklärt, wie man Deadlocks vermeidet und Ausnahmen in asynchronem Code korrekt behandelt.
Für wen dieses Buch ist
Dieses Buch wird nützlich sein für:
- Fortgeschrittene C#-Entwickler, die bereits mehrere Projekte geschrieben haben und ihr Wissen systematisieren möchten.
- Programmierer, die von anderen Sprachen wechseln (Java, C++), um die Besonderheiten von C# und .NET zu verstehen.
- Teamleiter und Architekten, die Codierungsstandards im Team etablieren möchten.
- Studenten in höheren Semestern, die .NET studieren, für ein vertieftes Verständnis der Plattform.
Was der Leser lernen wird
Nach der Lektüre des Buches werden Sie in der Lage sein:
- Die richtige Wahl zwischen Klassen und Strukturen unter Berücksichtigung der Leistung zu treffen.
- Typische Fehler bei der Arbeit mit Ereignissen und Delegaten zu vermeiden.
- Speicher effizient zu verwalten und Speicherlecks zu vermeiden.
- Saubere und leistungsfähige LINQ-Abfragen zu schreiben.
- Asynchrone Operationen ohne Blockaden und Race Conditions aufzubauen.
- Die internen Mechanismen des Compilers und der CLR zu verstehen.
- C#-Idiome wie using, yield return und Objektinitialisierer anzuwenden.
Stärken des Buches
Der Hauptvorteil des Buches ist seine praktische Ausrichtung. Jeder Ratschlag (Item) ist ein in sich abgeschlossenes Modul, das sofort in einem realen Projekt angewendet werden kann. Der Autor sagt nicht einfach „mach es so“, sondern erklärt, warum dies richtig ist, und zeigt Beispiele für schlechten und guten Code. Besonders wertvoll sind die Abschnitte, in denen Bill Wagner Zielkonflikte diskutiert: zum Beispiel, wann ein Leistungsgewinn gerechtfertigt ist