mal was kleines selbst geschrieben (neuling)...was sagt ihr dazu?
-
Da hier alle am "verbessern" sind :
using namespace std;gewoehn dir das gar nich erst an !
Namespaces sind dazu da, benutzt zu werden, und nicht um global ausgehebelt zu werden ...das schreiben von std::cout anstatt cout usw. macht nur kleine muehe im gegensatz zu dem aerger, den nen schlecht angewoehntes Aushebeln der namespaces bringt ...
Und im gegenteil, willst deine Autohaus dinger mal spaeter weiter verwenden, fuer eine menge anderer Programe, beispiel ne Verwaltung, Berechnungsprog oder so ... und die klassen demnach in diverse libs auslagern, solltest die gleich in nen eigenen namespace werfen ...
deine strings:
char m_chHersteller[21]; zum beispiel
Sowas bringt dir imense vorteile, wenn deine Daten binaer serialisieren musst ... also ueber nen stream (datenstrom) schicken musst.
Anwendungsfaelle dafuer sind: Lesen / schreiben in binaere (nich menschlich lesbare) Dateien, Datenaustausch zwischen prozessen (" getrennte programme auf einem rechner, oder unterschiedliche rechner, Netzwerk aller art)Wenn das nich brauchst, solltest dynamische allokierte strings nehmen, mit ner passenden Stringklasse ... da ja die STL schon nimmst, schau dir vielleicht basic_string<> an.
Nen festnageln von Strings auf feste maximale laengen, bringt frueher oder spaeter, wenn dein code denn weiterverwendet wird, immer irgendwann Probleme bzw einschraenkungen.
Am Anfang bei kleineren Projekten sieht es immer lapidar aus wenn man sagt, ok, dann muss mer halt mal neu kompilieren ...
wenn dein zeugs von zig anwendungen gebraucht wird, und alles bisserl komplizierter wird, iss neukompilieren teilweisse das overkill kriterium ... wenn ne komplizierte versionierung und ne menge clients dranhaengen ....Also sollt man von vornherein solche "Probleme" zumindest mit nem kritischen auge erst mal betrachten ...
Ciao ...
-
also statt char-arrays lieber strings nehmen? werd ich machen

btw: danke an alle noch mal für die kritik

-
Was spricht eigentlich gegen ein
using std::cout;z.B.?
-
RHBaum schrieb:
Da hier alle am "verbessern" sind :
using namespace std;gewoehn dir das gar nich erst an !
Namespaces sind dazu da, benutzt zu werden, und nicht um global ausgehebelt zu werden ...Dem würde ich so nicht zustimmen. In Headerdateien gehört soetwas meiner Meinung nach gründsätzlich verboten, weil man nicht kontrollieren kann, wo diese Datei im Endeffekt überall included wird.
Aber in Source-Files spart es zeit, besonders bei langen namespace-bezeichnern (z.b. boost::filesystem), auch wenn namespace-Aliase benutzt werden können. Spätestens aber wenn sich der namespaces ändert hat man sich damit allerdings auf die Füße getreten(ohne Alias). Außerdem passiert es nicht oft, dass man aus mehreren namespaces gleichnamige Funktionen/Konstanten innerhalb einer einzigen anderen Funktion benötigt.mfg
-
RHBaum schrieb:
Da hier alle am "verbessern" sind :
using namespace std;gewoehn dir das gar nich erst an ! ...
Seh ich nicht so, nur in Header-Datein, hat das using generell nichts verloren.
Auf einen Nameclash wird dich der Compiler normalerweise hinweisen. Und falls,
es Probleme gibt ist da immer noch das "eingeschränkte" using gemäss Apollon
möglich.
Bei Konstrukten die sich aus mehreren Bestandteilen der STL zusammen setzen
kann es ohne using ziemlich schnell lang und unübersichtlich werden.
-
finix schrieb:
"(NAMESPACE_)*(CLASSNAME_|FILENAME_)(HPP|CPP)" sprechen würde..
öhm... cpp?
Vielleicht sollte man noch das Datum mit reinbringen, denn die Wahrscheinlichkeit, dass man mehrere Klassen mit dem selben Namen am gleichen Tag implementiert, ist viel geringer, als die sich einmal im namespace zu irren/etc.
mfg
-
Dem würde ich so nicht zustimmen. In Headerdateien gehört soetwas meiner Meinung nach gründsätzlich verboten, weil man nicht kontrollieren kann, wo diese Datei im Endeffekt überall included wird.
Genau ... ok, ich schreib viel als templates / header implementierte Klassen, von daher vielleicht ...
Fuer XTausend mal in namespaces geschachtelte Klassen, wenn ich mir wirklich die finger bei brechen wuerd, gaebs immer noch typdefs. Ausserdem helfen einem die editoren da, sofern man nich mitm notepad schreibt :p
Wobei mehrfach geschachtelte namespaces hab ich eh extrem selten ...
Mit was fuer Libs arbeitet ihr denn ? :pWenn Ich Code durchschaue, und ich seh nen z.b.
ComboBox
muss ich erst an den anfang scrollen um das
using ATLControls
z.B zu finden.
steht dagegen gleich nen ATLControls::ComboBox (ich hab mir die finger echt nich bei verletzt grad
) weiss ich gleich mit was genau ich es zu tun hab ...Ok, bei den meisten sachen isses allein schon durch den Context definiert, weil das jemand ATL Controls und Controls ner anderen GUI-Lib verwendet in einem Project, iss eher selten
Ciao ...
-
Juhuu, endlich mal jemad der weiss, dass es auf der Tastatur auch eine Leertaste gibt. Wobei man nicht unbedingt überall Leerzeichen machen muss. ZB beim Scope Operator oder den Funktionsklammern ist es imo unnötog.
//also statt CAuto :: CAuto () // durchaus so CAuto::CAuto()Ansonsten, bis auf die angesprochenen Kleinigkeiten, recht gut für den Anfang.
RHBaum schrieb:
Da hier alle am "verbessern" sind :
using namespace std;gewoehn dir das gar nich erst an !
Namespaces sind dazu da, benutzt zu werden, und nicht um global ausgehebelt zu werden ...Grundsätzlich stimme ich dir da zu, gerade wenn man mit mehreren Bibliotheken arbeitet. Bei solchen Miniprogrammen ist das aber durchaus ok.
-
RHBaum schrieb:
Wenn Ich Code durchschaue, und ich seh nen z.b.
ComboBox
muss ich erst an den anfang scrollen um das
using ATLControls
z.B zu finden.
steht dagegen gleich nen ATLControls::ComboBox (ich hab mir die finger echt nich bei verletzt grad
) weiss ich gleich mit was genau ich es zu tun hab ...Oder du besorgst dir eine moderne Entwicklungsumgebung. So mit kontext-sensitiver Hilfe, Source-Browser usw.
Btw:
Vorausgesetzt, dass wir von using-Direktiven in cpp-Dateien als erstes nach allen includes sprechen, halte ich Kommentare wie diesendas schreiben von std::cout anstatt cout usw. macht nur kleine muehe im gegensatz zu dem aerger, den nen schlecht angewoehntes Aushebeln der namespaces bringt ...
für sehr fragwürdig, denn sie tun so, als gäbe es wirklich handfeste Gründe gegen using-Direktiven in cpp-Dateien. Aber gibt es die wirklich?
Welchen Ärger kann eine using-Direktive denn in einer cpp-Datei bringen? Das schlimmste was passieren kann ist eine freundliche Beschwerde des Compilers und in diesem Fall kann ich immer noch auf die using-Direktive verzichten. Problemlos, da das Problem vollständig lokal ist.using-Direktiven in cpp-Dateien sind eine reine Frage des Stils.
Die einen (so wie ich) empfinden das ganze explizite Namespacegescope (besonders bei Standard-Typen) als unnötiges syntaktisches Rauschen. Die anderen finden das toll und hilfreich. Es gibt letztlich aber keinen technischen Grund für oder gegen sie (mal davon abgesehen, dass sie Compilern mit ADL-Problemen manchmal helfen).
Ganz im Gegensatz zu using-Direktiven in Headern. Die sind objektiv schlecht.
-
Es gibt ja noch eine Alternative für namespace-Inkludierung, nämlich innerhalb eines {}-Blocks:
void fn() { using namespace std; using std::cout; //... }So sehe ich aber eher selten.
-
powerball winner missouri makes $100 dollars a day at win the lottery parody. Is his career basically done for?