Allgemeine Frage zum Programmierstil:
-
Hallo.
In meinem Programm finden mindestens 400 API-Aufrufe (im Quellcode) statt.
Soll ich nun jede einzelne Funktion auf gute Rückgabewerte prüfen?
Ich denke immer wenn eine Funktion bei der Entwiclung des Programms funktioniert, dann tut sie das immer...Wenn ich überall eine Rückgabewertprüfung einbaue, dann wird das Programm sicherlich bis zu 20-30kb größer.
Meint ihr es lohnt sich? oder ist die Dateigröße wichtiger?Projekt ist zur Zeit fertiggestellt und ich bin dabei hier und da den Code zu optimieren und zu säubern. Aktuelle Dateigröße 110 kb.
Zur zeit habe ich nur an 4-6 Stellen ne Prüfung.
Mfg.
-
Ich persönlich würde es bevorzugen die Rückgabewerte zu kontrollieren, die paar Kilobits ist das auf jeden Fall wert.
-
LOL.
Da würde man sich doch eher über die Geschwindigkeit Sorgen machen, als über die Größe.

-
Ja. DU sollst nicht nur bei jedem Aufruf den Rückgabewert überprüfen, sondern deinen Code so gestalten, daß:
a) Der Aufrufer sich über Fehler informieren und entsprechend reagieren kann
b) Im Falle eines Fehlers die Programumgebung in einem stabilen Zustand hinterlassen (alle Ressourcen schön wieder freigeben, keine "dangling pointers", keine nicht-null-terminierten strings, keine von außen zugänglichen Variablen "Müll" enthalten lassen)
c) Spezielle Fehler zur Erhöhung der Robustheit speziell zu behandeln.
d) Die API soweit verstehen, daß Du die Fehlerbedingungen selbst einschätzen kannst.Geschwindigkeit? Größe?
Ich schere mich nicht dum, ob eine kleine Utility 400 oder 800KB groß ist. Und es ist mir Wurst, ob Das öffnen einer Datei 20 oder 20.2 ms dauert (die meisten API-Aufrufe dauern deutlich länger als die ausgefuchsteste Fehlerbehandlung)Irgendwo zwischen Exceptions, Funktionen, Scope Guards, Wrapper-Klassen und Macros gibt es sicherlich die richtige Lösung für dich.
Ich denke immer wenn eine Funktion bei der Entwiclung des Programms funktioniert, dann tut sie das immer...
Willkommen im realen Leben.
(Wenn Du einmal 'ne Software ausgeliefert hast, die bei 70% deiner Kunden nicht geht, würdest Du das auch anders sehen. Grund: "Kleiner letzte-Minute-fix" unter Windows 2000, die API verhält sich unter Win98 leider "anders". Wäre nicht mal so schlimm gewesen, ein Standardwert wäre nicht ordentlich eingetragen worden, aber die Software hätte funktioniert. Aber mit einer "dummen" Fehlerbehandlung a lá "Exception schmeißen und vergessen" hatte ich die gesamte Software lahmgelegt. Anfängerfehler
)
-
Wenigstens siehst du bei der Exception dann recht schnell, woran es liegt. Noch schlimmer wäre es, wenn einfach gar nichts passieren würde (weder das, was passieren soll, noch etwas, was nicht passieren soll - genau das ist nämlich der Fall, wenn man die Rückgabewerte ignoriert). Dann ist das Suchen der Ursache schon erheblich lustiger.
-
RICHTIG LUSTIG wirds erst dann, wenn zwar eine Exception auftritt, aber nicht, wenn du das Programm mit einem Debugger startest! Besonders schön ist das vor allem dann, wenn dein Programm mehrere Tausende Zeilen Code umfasst. *An vor zwei Monaten zurückerinner*. Achja, Zeitdruck kommt dann natürlich auch noch dazu!

-
Also ich steh nicht unter zeitdruck da ich als schüler ehh nur programmiere um nciht mehr zu programmieren kann ich mir ruhig zeit lassen. Ich ahbe nämlich vor 2 Jahren mit VB angefangen und habe immer nur gelernt, gelernt und gelernt und nichts sinnvolles gemacht. (...immer diese kleinen lamer-tools um leute zu stören..)
Vor fast nem Jahr ahbe ich gehört ein Freund lernt C also startete in mir der "Was der da kann muss ich besser können"-Komplex und ich habe VB beiseite geschmissen und habe C++ gelernt. Dann wollt ich mal was kleines machen und habe festgestellt dass unter Windows ohne WINAPI nix läuft. (MFC wolln wa ja nitt... ;))
Also habe ich nun die letzten 3 Monate WINAPI gelernt und hab auch in der Zeit mehr gelernt als ich in der Schule in einem ganzen Jahr lerne.
Dieses projekt wurde gestartet um aufzuhören, d.h. mich seid ihr bald für immer los
Es wäre ja schade wenn ich NICHTS programmiert hätte. Dann wäre ja alles wirklich umsonst. Ich wollte auch was in der Menge der hundertausende privatproggies weltweit haben, die ehh keine Sau nutzt. (wobei dieses Programm mir ja in der Schule nützen wird)Zu der dategröße:
Ich habe hier du da von einigen Programmierern ganze HPs gesehn die dem Thema
"Kleinsmögliche executables" gewidmet waren. die erklären da auf 20 Seiten wie man ne 100KB datei zu einer 70kb datei machen kann mit paar 'tricks', wobei das ganze (wie die auch selber sagen) auf Kosten der Geschwindigkeit und Zuverlässigkeit geht. Davon ahbe ich mich beeinflussen lassen und (z.t. auch aus faulheit) bisher fast nie die Rückgabewerte geprüft.Wenn ein Fehler kommt..
..dann piept es bei mir so richtig!
Und das meine ich wörtlich. Immer wenn ich Fehler feststelle baue ich an verdcähtigen Stellen ein Beep(222,222); ein und zähle dann die Piepse und weis dann wo der Fehler liegt. (Klar dass man die Piepsintervalle immer kleiner macht bis man schließlich die betroffene Zeile findet ;~)@lol:
Geschwindigkeit?? Da sag ich nur lol. Bei meinem Programm handelt es sich nicht um ne Grafikengine oder um nen komplizierten Algorithmus. Auch wenn jede Funktion einzeln ne Sekunde nähme... mein Programm würde funktionieren.
(wenn ich Geschwindigkeitsfreak wäre säße ich nciht an nem P3 500Mhz)@all:
Danke für die nötige kleine Motivation. Dann werde ich bald alle sinnvollen Stellen mit Fehlerprüfungen bereichern.Mfg.
-
Hey Tolga, bleib doch in der Community. Ich will dich nicht verlieren.

Stellst du uns denn wenigstens dein Programm zum Download bereit?
-
Vielleicht interessiert dich das: http://msdn.microsoft.com/msdnmag/issues/01/01/hood/default.aspx
-
bleib doch! schrieb:
Stellst du uns denn wenigstens dein Programm zum Download bereit?
*push*
-
Oh habe mich im letzten Posting Tolga genannt. *g*