Pseudo Templating mit Makros



  • Hm ok danke, d.h. ich sollte dann auf c zurückgreifen?

    hmm ja es sind 2 unterschiedliche typen bzw. strukturen die in den ringpuffer sollten. struct FRAME_TX und struct FRAME_RX

    hmm ok, void* is ne gute idee, dann kann ich ja die klasse verwenden, oder? ! und ja es ist ein array das ein fixe größte hat in der klassendefinition..

    welcher weg wäre am schönsten?



  • Kommt darauf an.

    Wenn die Typen aehnlich sind, kannst du ja auch eine struct mit den gleichen Member Typen erstellen - gleiche structs haben ja gleiches speicher layout (sofern man aufpasst).

    gibt viele moeglichkeiten. ich wuerde vielleicht sogar den code einmal mit void* schreiben und dann pro typ eigene accessors anbieten.

    schwer zu sagen.



  • jepp, die strukturen sind gleich groß, an das hab ich auch schon gedacht, kann man eig. easy casten.. aber ich will keinen redundaten code.. das mit void* und typ spezifische accessors wäre auch ne idee... hmmm.. was aber ne größere herrausforderung ist, is die variable größe der arrays oder?? wie könnte ich das anstellen, dynamisch speicher anfordern darf ich nich.. muss fix definiert sein.. nur bei der deklaration könnte ich das irgendwie angeben...



  • Wie wäre es mit einem festen Array und Unions?


  • Mod

    Wie wäre es damit, C++ ganz sein zu lassen und stattdessen C mit VLAs zu nutzen? Anscheinend darfst du ja sowieso nichts machen, was C++ rechtfertigen würde.



  • NullBockException schrieb:

    dynamisch speicher anfordern darf ich nich

    wenn das ein micro controller ist, dann nimm einfach ne richtige sprache dafuer. wenn dein c++ compiler eh keine features hat die c++ zu c++ machen, dann schreib das ganze gleich einer ordentlichen sprache fuer die plattform.



  • Warum dann ueberhaupt generisch? Der Arbeitsaufwand haelt sich doch sehr in Grenzen, dass ganze 3 Mal mit unterschiedlichen Typen zu programmieren.

    Warum ueberhaupt Objekte (class)? Wenn Speicher nicht dynamisch angefordert wird, dann kann auch gleich mit Arrays gerechnet werden.



  • Ja genau mircocontroller. Und ja das ding unterstützt C bzw. C++, auch templating etc. aber mein vorgesetzter vertraut dem c++ compiler nicht, da dieser teilweise falschen code generiet bzw. zu wenige warnungen ausspuckt...

    klassen verwendet ich nur zur kapselung, von einem OO design und dynamic kann man da nich sprechen.

    statt c module , sind c++ ne schönere kapselung (finde ich)

    naja werde dann den buffer glaub in C schreiben mit makros typen...

    Danke!



  • NullbockException schrieb:

    Ja genau mircocontroller. Und ja das ding unterstützt C bzw. C++, auch templating etc. aber mein vorgesetzter vertraut dem c++ compiler nicht, da dieser teilweise falschen code generiet bzw. zu wenige warnungen ausspuckt...

    Ah ja, und ein fehlerhafter Compiler wird plötzlich weniger fehlerhaft, wenn man anfängt, die Sprache zu vergewaltigen?
    Für die Warnungen kann man statische Codechecker einsetzen, die machen in der Hinsicht einen recht guten Job. Für den Verdacht, der Compiler könne falschen Code generieren gibts Tests. "Mein Vorgesetzter vertraut dem nicht" klingt sehr irrational...



  • Ich denke da ist nix schlimmes dran wenn man Klassen wirklich nur als Kapselung nimmt und ansonsten Funktionen nutzt die es auch in C gibt. Wenn ich mich recht erinnere hat John Carmack sein Doom3 auch so programmiert und Bjarne Stroustrup findet wohl auch nix schlimmes dran C mit Klassen zu programmieren, habe ich mal so gelesen.

    Kommt immer drauf an, ist da meine Meinung. OOP ist nur eine Art eine Software zu entwickeln nicht die einzige und mit Sicherheit auch nicht immer Weisheit letzter Schluss.

    Beruflich muss ich leider in PHP+Zend programmieren und unser Leiter ist so verstrickt in Pattern und generalisiert alles zu Tode, so dass man kaum noch nachvollziehen kann was das Programm eigentlich macht. Zu dem brauch er ewig um ein Problem zu lösen und hat es verlernt auch mal ganz einfache und banale Lösungen zu finden. Das hat er selbst zugegeben und wünscht sich mal wieder etwas einfacher an ein Probleme ran gehen zu können, ohne gleich alles generalisieren so wollen und damit ziemlich Lange für eine einfach Lösung zu brauchen.



  • Butterbrot schrieb:

    wünscht sich mal wieder etwas einfacher an ein Probleme ran gehen zu können, ohne gleich alles generalisieren so wollen und damit ziemlich Lange für eine einfach Lösung zu brauchen.

    Vielleicht sollte er ein bisschen Richtung TDD gehen (weiß nicht wie gute Testframeworks es für php+Zend gibt):
    Schreibe zuerst eine Reihe Tests, die genau das überprüfen, was eine Funktion/Klasse/Modul an Funktionalität haben soll. Schreibe danach den zu testenden Code möglichst simpel, so dass er gerade nur die Tests befriedigt, nicht mehr.



  • Das hatte wir wohl auch in der Firma mal, also son Test-Driven-Development auch Scum war im Einsatz. Die Entwickler mochten es, aber die Chefetage kostete beides zu viel Zeit und damit Geld, obwohl man am Ende viel Geld und Nerven sparen kann.



  • Butterbrot schrieb:

    Scum

    nice 😃

    Die Entwickler mochten es, aber die Chefetage kostete beides zu viel Zeit und damit Geld, obwohl man am Ende viel Geld und Nerven sparen kann.

    Wenn die Rechnung am Ende nicht aufgeht, ist natürlich jeder noch so schöne Prozess fürn Eimer. Allerdings muss man häufig der Chefetage erst beibringen, dass ein Produkt noch längst nicht fertig ist und die Kosten noch lange nicht aufhören, wenn der Nightly Build einmal durchgelaufen ist 😉



  • Butterbrot schrieb:

    auch Scum war im Einsatz

    Ich glaube, du meintest
    http://en.wikipedia.org/wiki/Scrum_(development)


Anmelden zum Antworten