Angepinnt Beispiele für guten und schlechten Code (Stil)

  • VB.NET

Es gibt 269 Antworten in diesem Thema. Der letzte Beitrag () ist von Hinti.

    powachill schrieb:

    Machs so:

    VB.NET-Quellcode

    1. Dim StringInMessageBox As String = "Unbekannt"
    2. String = IIf(True, "Boolean ist 'True'", "Boolean ist 'False'")


    Machs so:

    VB.NET-Quellcode

    1. Dim StringInMessageBox As String = If(True, "Boolean ist 'True'", "Boolean ist 'False'")
    In .NET kann man auch ein IF mit einem I benutzen. ;)
    (Dann musst du auch nicht mal von Object auf String casten, weil IIF immer ein Object zurück gibt)
    Von meinem iPhone gesendet

    singu schrieb:

    Wie benennt ihr die #Region bei z.B. New, Dispose, Eigenschaften, Methoden, Variablen usw.


    Region "Constructor"
    Region "Enum/Const/Declarations"
    Region "Propertys"
    Region "Public Methods"
    Region "Private Methods"
    Region "Destructor"

    Das ist so meine Vorgehensweise. ^^

    Gruß

    Rainer

    singu schrieb:

    @raist10: Danke für den Tipp. Ich glaub so werd ich es auch machen. Wenn du mehrere Funktionen hast, die überladen wurde, bekommen die auch ein eigenen Region


    Würde ich nur dann machen wenn es ansonsten noch weitere Methoden in der Region gibt. Ich überlade z.B. häufig den Constructor und da der eh eine eigene Region hat mache ich da natürlich dann keine weitere Region innerhalb der Region.

    Geht mir aber auch oftmals mit Public Methodes so ... viele Klassen haben bei mir oftmals nur eine einzige Public-Method da macht es dann keinen Sinn eine Region in der Region für die Überladungen anzulegen.

    Gruß

    Rainer
    Ab wann verwendet ihr Dlls? Und zwar habe ich momentan ein Projekt, das sehr viele Klassen hat, es ist alles objektorientiert programmiert. In dem Projekt habe ich die komplette Autounattend.xml von Windows 7 als Klassen dargestellt, diese Klassen benötige ich deshalb, weil ich diese Xml serialisiere und deserialisiere. Nun meine Frage, lohnt es sich diesen Teil in eine Klassenbibliothek auszulagern.
    Bei Binary Serialization ist das nicht ganz dumm, denn wenn du dann die Version des Hauptprogramms veränderst ist die Serialisierung trotzdem noch möglich und Versionsunabhängig(solange du dort nichts erweiterst)...
    Ansonsten mache ich es nur, wenn ich die Funktionen veröffentlichen möchte, oder die Dinge mehrmals Brauche...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich hab mal eine Frage zu Punkt 6, man soll "Using" benutzen. Gilt das gleiche auch für "with"? oder gibt es einen gravierenden unterschied zwischen den beiden:

    VB.NET-Quellcode

    1. Using ofd As New OpenFileDialog
    2. If ofd.ShowDialog = Windows.Forms.DialogResult.OK Then
    3. Me.Text = ofd.FileName
    4. End If
    5. End Using


    VB.NET-Quellcode

    1. With New OpenFileDialog
    2. If .ShowDialog = Windows.Forms.DialogResult.OK Then
    3. Me.Text = .FileName
    4. End If
    5. End With


    der einzige unterschied ist doch, dass man mit der with-variante nur ein objekt temporär deklarieren kann aber dann der vorteil hat einfach nur .filename oder .filter schreiben zu müssen...
    Außerdem instanziiert „using“ immer ein Objekt, während man mit „with“ auch ein schon bestehendes Objekt nutzen kann.
    „With“ ist eigentlich nur dazu da, um sich bei vielen Zuweisungen eventuell das Tippen langer Pro-pertypfade spart.
    Das nenne ich Krümelkackerei.

    GambaJo schrieb:

    Außerdem instanziiert „using“ immer ein Objekt,
    ==>
    muss immer ein Objekt explizit instanziiert werden.

    VB.NET-Quellcode

    1. Using a As New System.IO.Stream(...)
    2. End Using
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich bin mittlerweile von Visual Studio 2008 Professional auf Visual Studio 2010 Ultimate umgestiegen und ich bereu es überhaupt nicht.

    Nun zu meiner Frage bei den Propertys hat sich in Visual Studio 2010 viel geändert.

    Visual Stduio 2008

    VB.NET-Quellcode

    1. Private myPath As String = Nothing
    2. Public Property Path As String
    3. Get
    4. Return Me.myPath
    5. End Get
    6. Set(value As String)
    7. Me.myPath = value
    8. End Set
    9. End Property


    Visual Studio 2010

    VB.NET-Quellcode

    1. Public Property Path As String


    Würdet ihr weiterhin den Get- & Set-Block schreiben oder nur den Einzeiler.
    Public Property Path As String

    Ist komplett äquivalent zu:

    VB.NET-Quellcode

    1. Private _Path As String
    2. Public Property Path As String
    3. Get
    4. Return Me._Path
    5. End Get
    6. Set(value As String)
    7. Me._Path = value
    8. End Set
    9. End Property

    Kannst dir ja mal im kompillierten Code angucken, es ist nur für den Programmierer eine Abkürzung, der Code ist nachher derselbe...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Und dann nochmal ne Frage, welche Version nehmt ihr.

    Version 1:

    VB.NET-Quellcode

    1. Public Function Load() As Test
    2. Load = New Test()
    3. End Function


    Version 2:

    VB.NET-Quellcode

    1. Public Function Load() As Test
    2. Dim LoadResult As Test = Nothing
    3. LoadResult = New Test()
    4. Return LoadResult
    5. End Function
    Version 3:

    VB.NET-Quellcode

    1. Public Function Load() As Test
    2. Dim LoadResult As Test = New Test()
    3. Debug.Assert(LoadResult IsNot Nothing)
    4. Return LoadResult
    5. End Function
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!