Function Rückgabewert

  • Allgemein

Es gibt 6 Antworten in diesem Thema. Der letzte Beitrag () ist von ERSC.

    Function Rückgabewert

    Hallo,

    ich habe eine Function

    VB.NET-Quellcode

    1. Public Function Send_Command(ByVal Command As String) As Boolean

    Der Rückgabewert gibt mir an ob während der Verarbeitung der Function ein Fehler aufgetreten ist, oder nicht.
    Wenn ich mir nicht sicher bin ob ein Fehler auftreten kann, rufe ich die Function mit

    VB.NET-Quellcode

    1. If Not Send_Command("xxxx") Then
    2. '...Fehlerauswertung
    3. End If

    auf.
    Wenn ich mir sicher bin, daß kein Fehler auftritt rufe ich die Funktion nur mit

    VB.NET-Quellcode

    1. Send_Command("xxxx")

    auf.
    Nun ist meine einfache Frage, ob es "korrekt" ist, daß ich den Rückgabewert einfach unter den Tisch fallen lasse oder müßte ich zumindest ein

    VB.NET-Quellcode

    1. Dim a As Boolean
    2. '....
    3. a = Send_Command("xxxx")

    machen?

    ... es geht mir einfach nur darum, mir eine "saubere" Programmierweise anzugewöhnen...
    Moin,

    wenn du den Wert nicht brauchst musst du ihn nicht speichern. Also einfach:

    VB.NET-Quellcode

    1. Send_Command("xxxx")


    PS: Du solltest nur Exceptions fangen, die behandelbar sind (z.B. Zugriff verweigert bei Dateisystemoperationen)!
    Mit freundlichen Grüßen,
    Thunderbolt
    Ich versteh zwar nicht genau was das bezwecken soll, aber du kannst dir entweder Try..Catch anschauen, oder du löst es so:

    VB.NET-Quellcode

    1. If Send_Command("Dein String") = False Then
    2. Messagebox.Show("Fehler") Else
    3. Messagebox.Show("Kein Fehler")


    Wenn du eine Funktion ohne Rückgabewert haben willst, verwende doch einfach Sub..Exit Sub
    Da gibt es keinen Rückgabewert.

    ERSC schrieb:

    Nun ist meine einfache Frage, ob es "korrekt" ist, daß ich den Rückgabewert einfach unter den Tisch fallen lasse
    Das ist durchaus zulässig.

    Nur das Wort "Fehler" stößt ein bischen auf, weil in .Net gibts dafür umfangreiche Konzepte der Fehlerbehandlung (TryCatch und so).

    Nun ist unklar, ob dein Fehler wirklich ein Fehler ist, und also auch mit TryCatch behandelt werden sollte.

    Vlt. ist bei dir ja durchaus vorgesehen, dass eine Sendung nicht gesendet werden kann. Dann sollte die Methode einfach "TrySend() As Boolean" heißen, und alles wäre wieder klar.
    Danke für die Antworten.
    Ich weiß, "Fehler" ist ein sehr dehnbarer Begriff... die Function ist in ihren Möglichkeiten etwas umfangreicher und je nach Übergabeparameter ergibt sich eine unterschiedliche Möglichkeit, was ein "Fehler" sein/auslösen könnte. So ist ein TryCatch auch dabei, wobei die Function nicht bei jedem Parameter bis zu diesem Block kommt... der Name läßt es zwas vermuten, aber gesendet wird auch nicht immer... deshalb die etwas allgemeine formulierung.

    ... von meiner Seite aus ist die Frage beantwortet.
    Wenn es um komplexere Rückgaben geht, wie es Dein Fall vermuten lässt, so würde ich eine eigens dafür definierte Klasse als Rückgabe wählen. In dieser Klasse kannst Du z. B. einen evtl. aufgetretenen Fehler kapseln, die Rückgabe (evtl. bereits aufbereitet), usw. Ein einfaches Enum würde genügen, um den Status nach außen zu führen. So könntest Du beim Aufruf folgendes machen:

    VB.NET-Quellcode

    1. Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    2. Dim result As SendResult = Await Send("huhu")
    3. If result.SendStatus = SendResult.Status.Error Then
    4. MessageBox.Show(result.Error.ToString())
    5. Else
    6. MessageBox.Show(result.ResultString)
    7. End If
    8. End Sub


    Nur PseudoCode.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o