Frage zu Callback-Design

OP #5090813
Hallo zusammen,

mir ist klar: "1000 Wege führen nach Rom" bzw. zu einer Lösung in C.
Jedoch frage ich mich, was geschickter wäre.

Problem:
Ich habe ein (Software)-Modul, das mir Daten-Pakete versendet und 
empfängt. Nun stelle ich mir die Frage:
Erstelle ich nur einen Callback der mir als Parameter den Grund liefert, 
oder erstelle ich für jede Möglichkeit ein eigenen Callback, wobei im 
Fehlerfall wäre es ein ERR_Callback mit Parameter?

Somit würde im aufrufendem Modul entweder eine Funktion existieren die 
den Grund prüft oder halt für jeden Grund eine eigene Funktion.

Wie würdet ihr das lösen?
Oder was spricht für die eine oder andere Lösung?

Gruß
(Firma: Père Lachaise)
KISS Prinzip. Wieso möchtest du das unnötig aufbauschen? Neuer Datentyp 
mit Gründen als Enum, übergeben fertig.

Gegenfrage: was würdest du bei einem anderen Projekt erwarten wenn du 
auf eine solche triffst?
OP
Ja bis jetz bin ich auch den Weg gefahren:
1 Callback mit enum Parameter.

Und dann seh ich durch Zufall eine Lib. für CmdSend oder so (UART) in 
C++ vom Arduino (ich arbeite mit keinem Arduino, sondern mit einem 
SAM4E) in der mehrere Callbacks verwendet wurden.

Da hat sich mir die Frage gestellt, ob das evtl. einen Vorteil hat oder 
ähnliches.
(Firma: Torrox.de)
Adam P. schrieb:

> Da hat sich mir die Frage gestellt, ob das evtl. einen Vorteil hat oder
> ähnliches.

Überlege Dir, wie Du es als Nutzer Deiner API gerne hättest. Wenn im 
Erfolgsfall und im Fehlerfall komplett unterschiedliche Sachen 
passieren, dann könnten 2 callbacks praktisch sein. Wenn Du in 
unterschiedlichen Situationen, komplett unterschiedliche Parameter hast, 
die das eingetretene Ereignis beschreibt, dann wäre das auch ein Grund 
lieber mehr als einen Callback zu verwenden.
OP
Dann ist für mich die Frage erstmal geklärt.
Wie J. Fourier sagte, ich werd mich an KISS halten und solange ich nicht 
in den Zwang komme mehrere Callbacks nutzen zu müssen, bleibt es bei 
einem :-)

Danke euch erstmal!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.