Hallo,
ich werde in diesem Beitrag versuchen eine Idee von gutem Code (Stil) zu vermitteln.
Dafür werde ich das ganze - immer wenn es einen Anlass dazu gibt - erweitern.
Das ganze ist natürlich, wie die meisten Dinge subjektiv.
Dennoch glaube ich, einigen von euch einen Anstoss geben zu können.
Da ich aktuelle Codes aus dem Forum verwenden werde, bitte ich euch - falls Ihr einen eurer Codes findet - das nicht persönlich zu nehmen.
1. Verwende möglichst keine festen Zahlen, wenn es dafür eine Konstante gibt:
In vielen Fällen gibt es im Framework Konstanten (Enums) deren Text mehr aussagt als die nackte Zahl, die sich dahinter verbirgt.
Beispiel:
Der informierte weiss sicherlich, dass die 13 hier ein Enter Symbolisiert.
Schöner, weil besser lesbar ist aber folgendes
2. Suche von Zeichenfolgen in einem String:
Oft verwenden die Leute Schleifen, wenn ein Teilstring in einem String gesucht werden soll.
Beispiel:
Hier ist eigentlich alles Furchtbar.
1. Der Code stammt mit ziemlicher Sicherheit aus VB6
2. Es wurde eine Schleife zur Suche von "suchbegriff" verwendet.
So ist es übersichtlicher und kürzer.
Vielleicht noch eine kleine Ergänzung.
Wer die Position eines Teilstrings sucht, macht das am besten so.
3. Beachte immer Deine Datentypen und vermische sie nicht:
Auch wenn es mit den Standardeinstellungen keinen Fehler verursacht, sollten Datentypen nicht wild gemischt werden.
Wenn mal eine Umwandlung von einem in den anderen Datentyp nötig ist, gibt es dafür eigene Funktionen.
Beispiel:
Die Variable pos ist hier ganz eindeutig und klar als Integer definiert worden - was auch richtig ist.
Verglichen wird pos aber mit einem String.
Dies verursacht zwar keinen Fehler, sollte jedoch vermieden werden.
So sollte der Beispielcode aussehen.
4. Verwende Try...Catch Blöcke nur dort, wo unerwartete Fehler auftreten können:
Try ... Catch Blöcke wurden erfunden um unerwartet auftretende Fehler abfangen zu können.
Es macht wenig Sinn Code in Try ... Catch Blöcke zu packen, bei denen nichts unerwartetes Auftreten kann.
Beipiel:
Mit diesem Codeschnippsel sollte demonstriert werden wie Einträge einer Listbox mit der Maus verschoben werden können.
Die Listbox ist in diesem Fall in sich geschlossen und unerwartete Situationen sind nicht zu erwarten.
Unerwartet wäre z.B. eine evtl. Zugriffsverletzung in Verbindung mit Dateien.
Der obige Code kann also genausogut ohne den Try ... Catch Block geschrieben werden.
5. Verweden von Select Case Blöcken anstatt vieler If Anweisungen:
Oft ist es Sinnvoll Select Case Blöcke anstatt eine ganze Reihe von If Anweisungen zu verwenden.
Dies hat den Vorteil, das es ohne großen aufwand und ohne die Übersichtlichkeit des Codes zu gefährden erweitert werden kann.
Klar ist natürlich auch, dass nicht immer ein Select Case Block verwendet werden kann.
Im folgenden Beispiel jedoch schon.
Dadurch, dass Filterindex immer nur einen Wert annehmen kann - drängt sich hier Select Case einfach auf.
Die mögliche Erweiterbarkeit - z.B. wenn es einen neuen Wert abzufragen gibt - spricht auch dafür.
So würde es als Select Case Block aussehen.
6. Das Using Statement verwenden:
Werden verwendete Klassen nicht mehr gebraucht, sollten diese mit Dispose wieder freigegeben werden,
dies gilt vor allem für nicht verwaltete Resourcen. (z.B COM Objekten oder SQL Verbindungen)
(Damit später der Garbage Collector seine Arbeit tun kann.)
Durch Verwenden des Using Statements braucht man sich um solche Dinge nicht mehr zu kümmern.
Der Kompiler erledigt alle nötigen Aufrufe.
Beipsiel:
Bei verwaltetem Code wie z.b. dem SaveFileDialog hat Using den Vorteil, eine gewisse Übersicht in den Quellcode zu bringen.
Übersichtlicher Code ist besser lesbar, was natürlich sehr wichtig ist.
Deshalb ist es Ratsam auch hier den Using Block zu verwenden.
7. Verwende nie bekannte Eigenschaftsnamen als Variablenname:
Visual Basic erlaubt es bekannte Eigenschaftsnamen auch als Variable zu verwenden.
Dies macht den Code äußerst schlecht lesbar.
Jeder verbindet mit Eigenschaften wie z.b. "Text" eine Eigenschaft und keine Variable
Beispiel:
was spräche dagegen - hier einen anderen Variablennamen zu verwenden.
Einfach der Übersicht halber.
sieht doch schon viel klarer aus - oder ?
Gruss
mikeb69
ich werde in diesem Beitrag versuchen eine Idee von gutem Code (Stil) zu vermitteln.
Dafür werde ich das ganze - immer wenn es einen Anlass dazu gibt - erweitern.
Das ganze ist natürlich, wie die meisten Dinge subjektiv.
Dennoch glaube ich, einigen von euch einen Anstoss geben zu können.
Da ich aktuelle Codes aus dem Forum verwenden werde, bitte ich euch - falls Ihr einen eurer Codes findet - das nicht persönlich zu nehmen.
1. Verwende möglichst keine festen Zahlen, wenn es dafür eine Konstante gibt:
In vielen Fällen gibt es im Framework Konstanten (Enums) deren Text mehr aussagt als die nackte Zahl, die sich dahinter verbirgt.
Beispiel:
Der informierte weiss sicherlich, dass die 13 hier ein Enter Symbolisiert.
Schöner, weil besser lesbar ist aber folgendes
2. Suche von Zeichenfolgen in einem String:
Oft verwenden die Leute Schleifen, wenn ein Teilstring in einem String gesucht werden soll.
Beispiel:
Hier ist eigentlich alles Furchtbar.
1. Der Code stammt mit ziemlicher Sicherheit aus VB6
2. Es wurde eine Schleife zur Suche von "suchbegriff" verwendet.
So ist es übersichtlicher und kürzer.
Vielleicht noch eine kleine Ergänzung.
Wer die Position eines Teilstrings sucht, macht das am besten so.
3. Beachte immer Deine Datentypen und vermische sie nicht:
Auch wenn es mit den Standardeinstellungen keinen Fehler verursacht, sollten Datentypen nicht wild gemischt werden.
Wenn mal eine Umwandlung von einem in den anderen Datentyp nötig ist, gibt es dafür eigene Funktionen.
Beispiel:
Die Variable pos ist hier ganz eindeutig und klar als Integer definiert worden - was auch richtig ist.
Verglichen wird pos aber mit einem String.
Dies verursacht zwar keinen Fehler, sollte jedoch vermieden werden.
So sollte der Beispielcode aussehen.
4. Verwende Try...Catch Blöcke nur dort, wo unerwartete Fehler auftreten können:
Try ... Catch Blöcke wurden erfunden um unerwartet auftretende Fehler abfangen zu können.
Es macht wenig Sinn Code in Try ... Catch Blöcke zu packen, bei denen nichts unerwartetes Auftreten kann.
Beipiel:
Mit diesem Codeschnippsel sollte demonstriert werden wie Einträge einer Listbox mit der Maus verschoben werden können.
Die Listbox ist in diesem Fall in sich geschlossen und unerwartete Situationen sind nicht zu erwarten.
Unerwartet wäre z.B. eine evtl. Zugriffsverletzung in Verbindung mit Dateien.
Der obige Code kann also genausogut ohne den Try ... Catch Block geschrieben werden.
5. Verweden von Select Case Blöcken anstatt vieler If Anweisungen:
Oft ist es Sinnvoll Select Case Blöcke anstatt eine ganze Reihe von If Anweisungen zu verwenden.
Dies hat den Vorteil, das es ohne großen aufwand und ohne die Übersichtlichkeit des Codes zu gefährden erweitert werden kann.
Klar ist natürlich auch, dass nicht immer ein Select Case Block verwendet werden kann.
Im folgenden Beispiel jedoch schon.
VB.NET-Quellcode
- If SFD.FilterIndex = 0 Then
- SsHot.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Png)
- Exit Sub
- End If
- If SFD.FilterIndex = 1 Then
- SsHot.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
- Exit Sub
- End If
- If SFD.FilterIndex = 2 Then
- SsHot.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Gif)
- Exit Sub
- End If
Dadurch, dass Filterindex immer nur einen Wert annehmen kann - drängt sich hier Select Case einfach auf.
Die mögliche Erweiterbarkeit - z.B. wenn es einen neuen Wert abzufragen gibt - spricht auch dafür.
So würde es als Select Case Block aussehen.
VB.NET-Quellcode
- Select Case SFD.FilterIndex
- Case 0
- SsHot.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Png)
- Case 1
- SsHot.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Bmp)
- Case 2
- SsHot.Save(SFD.FileName, System.Drawing.Imaging.ImageFormat.Gif)
- Case Else
- 'Case Else sollte immer Programmiert werden, um auf ungewünschte
- 'bzw. unerwartete Ereignisse aufmekrsam gemacht werden zu können
- End Select
6. Das Using Statement verwenden:
Werden verwendete Klassen nicht mehr gebraucht, sollten diese mit Dispose wieder freigegeben werden,
dies gilt vor allem für nicht verwaltete Resourcen. (z.B COM Objekten oder SQL Verbindungen)
(Damit später der Garbage Collector seine Arbeit tun kann.)
Durch Verwenden des Using Statements braucht man sich um solche Dinge nicht mehr zu kümmern.
Der Kompiler erledigt alle nötigen Aufrufe.
Beipsiel:
Bei verwaltetem Code wie z.b. dem SaveFileDialog hat Using den Vorteil, eine gewisse Übersicht in den Quellcode zu bringen.
Übersichtlicher Code ist besser lesbar, was natürlich sehr wichtig ist.
Deshalb ist es Ratsam auch hier den Using Block zu verwenden.
7. Verwende nie bekannte Eigenschaftsnamen als Variablenname:
Visual Basic erlaubt es bekannte Eigenschaftsnamen auch als Variable zu verwenden.
Dies macht den Code äußerst schlecht lesbar.
Jeder verbindet mit Eigenschaften wie z.b. "Text" eine Eigenschaft und keine Variable
Beispiel:
was spräche dagegen - hier einen anderen Variablennamen zu verwenden.
Einfach der Übersicht halber.
sieht doch schon viel klarer aus - oder ?
Gruss
mikeb69
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von „mikeb69“ ()