Tipps zum Schreiben von sauberem und prägnantem Code in C#

Einführung

In diesem Artikel werden wir einige sehr coole Tipps zum sauberen und prägnanten Schreiben von C#-Code diskutieren, um die Wartbarkeit und das Verständnis zu verbessern. Wir werden besprechen, wie wir wenige Codezeilen schreiben können, um dieselbe Aufgabe zu erledigen, anstatt eine zusätzliche Codezeile zu schreiben.
Diese kleinen Tipps und Gewohnheiten sind wirklich sehr wichtig, wenn Ihre Anwendung zu wachsen beginnt und Sie Ihren Code so organisieren möchten, wie Sie es möchten, damit andere Teammitglieder Ihren Code leicht verstehen können.

Tipp 1: Bevorzugen Sie Inline-Logiken

Inline-Logiken werten das Ergebnis aus und geben es in einer einzigen Zeile zurück. Inline-Logiken sind sehr nützlich, um einfache algebraische Ausdrücke zu definieren.
Einfaches Beispiel
Wenn Sie beispielsweise ein Szenario haben, in dem Sie wahr zurückgeben müssen, wenn ein bestimmter Wert gleich 10 ist, können Sie dieses Problem auf viele mögliche Arten lösen, aber hier werden wir zwei mögliche Lösungen diskutieren.
Lösung 1: Sie können dieses Problem mit if else block lösen.
Aber sehen Sie hier, wir lösen ein Problem mit 8 bis 10 Zeilen, was nicht sehr schlau ist.
1.png
Lösung 2: Sie können dieses Problem lösen, indem Sie Inline-Logik schreiben.
2.png
Zwei Linien, die die gleiche Arbeit von 9 bis 10 Linien erledigen

Beispiel für einen ternären Operator (? 😃

Aus dem obigen Beispiel geben wir bool vom Ausdruck zurück, aber was ist, wenn wir etwas anderes als bool zurückgeben müssen und wir auch die Prägnanz und Sauberkeit unseres Codes bewahren wollen. In C# verwenden wir den ternären Operator zum Definieren einer logischen Inline-if-Anweisung, um das Ergebnis eines beliebigen Typs zurückzugeben.
Wie immer werden wir hier zwei mögliche Lösungen besprechen, lassen Sie uns das obige Beispiel auf die nächste Ebene bringen, aber hier werden wir eine Textnachricht anstelle von bool zurückgeben.
Lösung 1: Wir können die if-else-Anweisung verwenden, um das Problem zu lösen
3.png
Die If-else-Anweisung ist sehr wichtig und wird häufig in vielen Szenarien verwendet, in denen wir eine Entscheidung treffen müssen, aber in Fällen, in denen wir einfache Logiken zum Auswerten haben, können wir mithilfe des ternären Operators einen etwas saubereren Code schreiben.
4.png
Der ternäre Operator wertet den ersten Teil aus, wenn die Bedingung wahr ist, und den zweiten Teil, wenn die Bedingung falsch ist.

Beispiel für Null-Coalescing-Operator (??)

Der Null-Coalescing-Operator wird verwendet, um nach Nullwerten zu suchen. Wenn der Operand auf der linken Seite null ist, wird der Operand auf der rechten Seite zurückgegeben. Andernfalls wird in jedem Fall, wenn der Operand auf der linken Seite nicht null ist, der Wert des Operanden an zurückgegeben linke Seite selbst.
Werfen wir einen Blick auf den Democode, ohne den Null-Coalescing-Operator zu verwenden.
5.png
Mit dem Null-Coalescing-Operator können wir dieselbe Aufgabe in einer Zeile erledigen.
6.png

Tipp 2: Else-Block ist nicht immer notwendig

Der If-Else-Block wird häufig verwendet, um Entscheidungen zu treffen, z. B. Wenn der Wert das ist, dann tue das, und wenn der Wert das nicht ist, dann tue etwas anderes. Oft müssen wir nach dem if-Block einen else-Block definieren, der nicht jedes Mal definiert werden muss.
Nehmen wir das vorherige Beispiel der Entscheidung über value==10, normalerweise schreiben wir Code wie diesen
7.png
Der Else-Block, den wir hier definieren, ist nicht unbedingt erforderlich, wir können die gleiche Aufgabe ohne Else-Block erledigen.
8.png
Wenn die Logik als falsch ausgewertet wird, wird der if-Block nicht ausgeführt und der Controller beginnt die Ausführung automatisch in der nächsten Zeile vom Ende des if-Blocks.

Tipp 3: Bevorzugen Sie die String-Interpolation

Die Zeichenfolgeninterpolation wird verwendet, um dynamische Werte zur Laufzeit in eine Textzeichenfolge einzufügen. Die Zeichenfolgeninterpolation ist eine neue Funktion, die C# 6.0 hinzugefügt wurde. Vor C# 6.0 müssen wir zu diesem Zweck Zeichenfolgenverkettungen und Zeichenfolgenplatzhalter verwenden. Nach C# 6.0 ist die Zeichenfolgeninterpolation eine vorzuziehende, sauberere und effizientere Methode zum Interpolieren dynamischer Werte in Zeichenfolgen.
Beispielsweise müssen wir einen Künstlernamen und eine E-Mail-Adresse zu einer Zeichenfolge hinzufügen. Bei Verwendung der Zeichenfolgenverkettung verwenden Sie den Plus-Operator (+) zum Einfügen dynamischer Werte.
9.png
Die Verkettung von Zeichenfolgen ist jedoch aufgrund der Unveränderlichkeit von Zeichenfolgen in C# immer eine schlechte Praxis. Es wird immer ein neues String-Objekt gemäß der Verkettung erstellt, deshalb ist die String-Verkettung in Bezug auf die Speicherverwaltung schlecht.
Mit String-Interpolation können wir die gleiche Arbeit sauberer und effizienter erledigen.
Alles, was Sie brauchen, ist ein Dollarzeichen ($) vor dem String hinzuzufügen, danach können Sie dynamische Werte mit geschweiften Klammern „{}“ direkt mit dem String einfügen.
10.png
Die Zeichenfolgeninterpolation erzeugt in diesem Fall nur ein Zeichenfolgenobjekt auf dem Heap.

Tipp 4: Deklarieren Sie nahe zu verwendende Variablen

Deklarieren Sie Ihre Variablen immer in der Nähe der Stelle, an der Sie sie verwenden. Wenn Sie eine Variable weit entfernt von der Verwendung deklariert haben, können andere Entwickler sogar verwirrt über die Verwendung von Variablen sein.
Wenn Sie Ihren Code nach langer Zeit sehen, besteht die Möglichkeit, dass Sie sich über die Verwendung Ihrer Variablen verwirren.
11.png

Tipp 5: Verwenden Sie Methoden mit Ausdruckskörper

Methoden mit Ausdruckskörper werden bevorzugt in Fällen verwendet, in denen Ihre Methodendefinition größer ist als der eigentliche Methodenkörper. In Methoden mit Ausdruckskörper verwenden wir, anstatt den gesamten Methodenkörper zu schreiben, den Lambda-Pfeil, um von der Methode in einer Zeile zurückzukehren.
12.png

Tipp 6: Vermeiden Sie es, zu viele Variablen zu deklarieren

Versuchen Sie immer zu vermeiden, zu viele Variablen zu deklarieren. Zu viele Variablen machen Ihre Methoden fetter und verwirrender. Anstatt Variablen zu deklarieren, schlage ich vor, sie zu inlinen.
Eine schlechte Praxis kann zum Beispiel die folgende sein.
13.png
Im obigen Ausschnitt deklarieren wir einige zusätzliche Variablen, die wir nicht wirklich deklarieren müssen. Wir können stattdessen Inline-Variablen verwenden.
14.png
Das sieht jetzt viel besser und klüger aus.

Tipp 7: Zu viele Parameter nerven

Zu viele Parameter für Methoden zu haben, ist irritierend. Wenn zu viele Parameter erforderlich sind, können Sie diese Werte, anstatt sie einzeln bereitzustellen, in ein Objekt einschließen und stattdessen das Objekt akzeptieren.
Das Akzeptieren einer Wrapper-Klasse anstelle von enormen Parametern wäre viel sauberer
15.png

Tipp 8: Lassen Sie Ihre Methoden und Klassen nicht fett werden

Während wir an einer Anwendung arbeiten, konzentrieren wir uns zunächst auf den Funktionsteil, haben keine Regeln zu befolgen, wir platzieren einfach Dinge, wo immer wir wollen, und stellen sicher, dass die Anwendungsfunktionalität ordnungsgemäß funktioniert. Aber wenn die Anwendung wächst, fangen die Dinge an, durcheinander zu kommen, und es wird schwierig, den Code zu verwalten. Wachsende Geschäftsanforderungen und schlechtes Architekturdesign werden uns zu weiteren Wartungs- und Testproblemen führen.
Sich in Richtung sauberer Architektur zu bewegen, wird immer die beste Wahl sein, stellen Sie die Dinge dorthin, wo sie hingehören. Lassen Sie niemals zu, dass Ihre Klassen und Methoden Nebenjobs machen, die sie nie machen wollten. Nachfolgend haben wir ein Beispiel für saubere und schlechte Vorgehensweisen beim Schreiben von Code.
16.png
Planen Sie Anwendungsschichten und modularisieren Sie Code. Befolgen Sie beim Entwerfen von Klassen und Methoden das SOLID-Architekturprinzip. Aber die Frage ist, wie sehr wir unseren Code modularisieren sollten?
Antwort: Einfache Antwort auf diese Frage ist so viel wie wir können.
Jede Klasse muss eine einzige Verantwortung haben und jede Methode muss eine einzige individuelle Aufgabe haben, die sie ausführen muss. Dinge mit zu vielen Verantwortlichkeiten sind schwer zu pflegen.
17.png
Auf der anderen Seite sind Dinge mit Einzelverantwortung leicht zu warten.
18.png

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *