Beschreibung von ByVal in Funktion

  • VB.NET

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Beschreibung von ByVal in Funktion

    Hallo,
    ich hab hier eine kurze Frage:

    Mit

    VB.NET-Quellcode

    1. Public Shared Function IRGENDEINE_FUNKTION(ByVal IRGENDWAS As String)
    2. 'Hier steht halt der Inhalt
    3. End Function
    habe ich eine Funktion erstellt, die auch funktioniert.
    Nun hätte ich aber gerne eine Beschreibung, die angezeigt wird, sobald man am Eintragen der Einstellungen ist (wie das bei einer MSG-Box ist - siehe Anhang). Hat da jemand eine Idee, wie das geht?

    Sry, wenns ne dumme Frage ist...
    Gruß, BjöNi
    Bilder
    • Beschreibung.jpg

      86,33 kB, 748×350, 226 mal angesehen

    VB.NET-Quellcode

    1. ''' <summary>
    2. ''' Meine Funktion
    3. ''' </summary>
    4. ''' <param name="i1">1. Parameter</param>
    5. ''' <param name="txt">2. Parameter</param>
    6. ''' <remarks>macht dies und jenes</remarks>
    7. Private Sub MeineSub(ByVal i1 As Integer, ByVal txt As String)
    8. ' bla
    9. End Sub

    Gib über Deiner Prozedur 3 Kommentarzeichen ein und drück Enter.
    Dann ersgtellt die Umgebung einen Rumpf, den Du ausfüllen musst.
    Bilder
    • MeineSub.jpg

      10,57 kB, 300×126, 161 mal angesehen
    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!
    Danke, das hab ich vorher nicht gekannt.

    Noch eine Frage: Was hat

    VB.NET-Quellcode

    1. ''' <returns></returns>
    2. ''' <remarks></remarks>
    zu bedeuten? Egal was ich da eintrage, es wird (scheinbar) nicht verwertet.
    Wird glaube ich beim Drüberfahren mit dem Cursor angezeigt.
    LG
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    Nikx schrieb:

    Wird glaube ich beim...
    ;)
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!

    VB.NET-Quellcode

    1. ''' <returns>Die Funktion return dies und jenes</returns>
    2. ''' <remarks>Dies ist ein Kommentar</remarks>

    Wird im Editor nicht angezeigt.
    Wenn Du aber Deinem Projekt die Eigenschaft
    Projekt -> Eigenschaften -> Kompilieren
    XML-Dokumentationsdatei (Haken rein) gibst, wird aus all diesen Informationen Deines Projekts eine Datei generiert, die Dein Projekt entsprechend gut beschreibt.
    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!

    msdn schrieb:


    Mittels des <remarks>-Tags werden Informationen über einen Typ hinzugefügt. Diese dienen als Ergänzung zu den mit <summary> angegebenen Informationen.
    Diese Informationen werden im Objektkatalog angezeigt.

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Ach so, also nicht unbedingt nötig...

    Und nochmal was, was mir gerade einfällt:
    Wie kann man Teile davon als Optional markieren, sodass dem User keine Fehlermeldung angezeigt wird, wenn er es weglässt? Oder kann man definieren, ab wo es als Optional gewertet wird?
    EDIT: Hab jetzt HIERdasselbe rausgefunden...
    Optionale Parameter sollten immer zum Schluss kommen, so definierst du sie:

    VB.NET-Quellcode

    1. Function F(ByVal x As Integer, Optional ByVal y As Integer = 0, Optional ByVal z As Integer = 0)
    2. ' ...
    3. End Function

    haiyyu schrieb:

    Optionale Parameter sollten immer zum Schluss kommen

    nicht Sollten sondern Müssen.
    Der Compiler lässt anderes nicht zu.
    Bilder
    • optional.jpg

      8,17 kB, 536×79, 184 mal angesehen
    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!

    BjöNi schrieb:

    Ach so, also nicht unbedingt nötig...

    auch die anneren Doku-Tags sind nicht unbedingt nötig.
    Ich empfehle, das Zeug sparsam einzusetzen.
    IN den meisten Fällen macht eine gute Benamung von Methoden und Parametern diese Kommentar-Orgien üflüssig.

    In den anderen Fällen (also wo das wirklich nicht gelingt), sind Doku-Kommentare dann aber auch absolut wichtig.

    Nach diesrer Richtlinie erhält man gut lesbaren Code, und Doku-Kommentare werden auch zur Kenntnis genommen, grade weil eben nicht wahllos jede Methode belabert wird.
    Eine ordentliche Beschreibung der Parameter, insbesondere ihres Wertebereiches, halte ich für absolut sinnvoll, um nicht zu sagen erforderlich.
    Irgensdwo ist es eine Frage des Programmierstils, außerdem kann das auch in eine DLL reingeschrieben und beim aufrufensden Programm genutzt werden.
    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!
    machmal'n Beispiel. Also was reelles - nicht "MySub()" und Zeugs.
    also ich zeige mal ein schlechtes Beispiel auf, aussm ObjectBrowser:

    ObjectBrowser schrieb:

    Sub CopyTo(ByVal array() As T, ByVal arrayIndex As Integer)
    Member von System.Collections.Generic.ICollection(Of T)
    Zusammenfassung:
    Kopiert die Elemente von System.Collections.Generic.ICollection(Of T) in ein System.Array, beginnend bei einem bestimmten System.Array-Index.

    Parameter:
    array: Das eindimensionale System.Array, das das Ziel der aus System.Collections.Generic.ICollection(Of T) kopierten Elemente ist.Für System.Array muss eine nullbasierte Indizierung verwendet werden.
    arrayIndex: Der nullbasierte Index in array, an dem das Kopieren beginnt.

    Ausnahmen:
    System.ArgumentNullException: array hat den Wert null.
    System.ArgumentOutOfRangeException: arrayIndex ist kleiner als 0.
    System.ArgumentException: array ist mehrdimensional.- oder -Die Anzahl der Elemente in der Quelle System.Collections.Generic.ICollection(Of T) ist größer als der verfügbare Speicherplatz ab arrayIndex bis zum Ende des array, das als Ziel festgelegt wurde.- oder -Typ T kann nicht automatisch in den Typ des Ziel-array umgewandelt werden.
    Findest du in diesem Gelaber ieine nicht-selbstverständliche Information?

    Was denken die eigentlich, was ich wohl vorhab, wenn ich mw. so eine Methode aufrufe:

    VB.NET-Quellcode

    1. MyList.CopyTo(myArray, arrayIndex:=5)
    Käsekuchen backen?
    Ich hab bei solche "Dokumentation" immer das Gefühl, man hält mich für bescheuert.

    oder dieses hier:

    ObjectBrowser schrieb:

    Public Function Contains(ByVal value As String) As Boolean
    Member von System.String
    Zusammenfassung:
    Gibt einen Wert zurück, der angibt, ob das angegebene System.String-Objekt in dieser Zeichenfolge vorkommt.

    Parameter:
    value: Die zu suchende Zeichenfolge.

    Rückgabewerte:
    true, wenn der value-Parameter in dieser Zeichenfolge vorkommt oder value eine leere Zeichenfolge ("") ist, andernfalls false.

    Ausnahmen:
    System.ArgumentNullException: value hat den Wert null.
    Das Gelaber ist IMO komplett üflüssig, denn die Bedeutung von String.Contains(value As String) ist erfreulicherweise vollständig selbsterklärend.

    Also was ich anrege ist:
    Nicht stupide nach Schema F das Formular ausfüllen, was VisualStudio da hingeneriert, wenn man ''' eingibt, sondern Kopf anmachen und denken: "welche Info braucht der Leser?"
    Und wenn was gefunden, was sich nicht aus dem Code-Design direkt ergibt, dann zunächst dieses Code-Design überprüfen.
    Und erst dann was hinzukommentieren, wenn man kein perfektes Design hinbekommt.

    Beispiele für gelungenes "perfektes Design" im o.g. Sinne: String.Contains(value), String.IndexOf(), .EndsWith(), ... um mal bei String zu bleiben.
    Wie gesagt: Da diese Methoden perfekt designed sind, sind die daran angefügten Doku-Kommentare überflüssiger Müll und schlechtes Beispiel.

    Dieser Beitrag wurde bereits 18 mal editiert, zuletzt von „ErfinderDesRades“ ()