Forum: Mikrocontroller und Digitale Elektronik Frage zu Callback-Design


von Adam P. (adamap)


Lesenswert?

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ß

von J. F. (Firma: Père Lachaise) (rect)


Lesenswert?

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?

von Adam P. (adamap)


Lesenswert?

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.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

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.

von Adam P. (adamap)


Lesenswert?

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!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.