Guten Morgen zusammen,
ich gehe gerade alte, nicht mehr ganz frisch riechende Code-Teile durch
und stelle fest, dass ich nie ein stringentes Namensschema entwickelt
habe. Ich habe das mal am Beispiel von clamp() durchexerziert, weil das
eine Funktion ist, die ich für jeden benutzten Datentyp mal
implementiert habe.
Die Funktion selbst ist nahezu banal:
a) Ist das Schema sinnvoll, oder gibt es etwas besseres?
b) Zur konkreten Funktion clamp() (da C keine Templates kennt): Gibt es
eine "schöne" Variante der Implementierung?
b1): Was sicherlich funktioniert ist eine Makro-Hölle aus ternären
Operatoren.
b2): Tatsächlich implementiert habe ich sclampll() und uclampll(),
alle anderen Integer-Funktionen rufen diese lediglich auf. Da alle
Funktionen static inline sind, hoffe ich, daß der Compiler selbst
erkennt, daß er den Integer nicht aufbohren muß. (Bei allen überprüften
Listings wurde diese Hoffnung auch nicht enttäuscht, aber das ist ja
keine allgemeine Bestätigung.)
Als Freund der Autovervollständigung würde ich die Funktionen nur im
Suffix unterscheiden(clamp_u8, clamp_i32 etc.). Für meinen Geschmack ist
das weniger hässlich; warum man die Datentypkennzeichnung auf Pre- und
Suffix des Funktionsnamens verteilen sollte, erschließt sich mir nicht.
Tom schrieb:> würde ich die Funktionen nur im> Suffix unterscheiden(clamp_u8, clamp_i32 etc.). Für meinen Geschmack ist> das weniger hässlich;
So gehe ich bei der Benennung von Messstellen vor.
Im coden habe ich zu wenig Erfahrung.
Jeder Name, den ich vergebe, sollte selbsterklärend sein.
Klappt aber nur, wenn das Projekt auch wirklich fertiggestellt wird...
Ich habe sehr wohl gelesen, dass es hierbei um C geht. Trotzdem gebe ich
zu bedenken: warum nicht einfach Deinen Code mit einem C++ Compiler
übersetzen und in diesem Fall einfach die Möglichkeit nutzen, Funktion
zu überladen? Du kannst zwar templates benutzen, aber wenn Dir das zu
"kompliziert" erscheint, reicht auch schlichtes Überladen.
Natürlich gibt es wie
- Inkompatibilitäten (Klassiker: unions)
- C-Erweiterungen (fixed-point, _flash)
Derartiges kannst Du weiterhin in C TUs belassen.
Wenn Du eh am Refaktorieren bist, kannst Du das ja mal checken ...