W
Hallo Ruvi,
Ruvi schrieb:
Ich habe bis jetzt nur c++ code von mir gesehen und der ist bei weitem nicht so komplex.
Ich bin ehrlich gesagt auch ein wenig geschockt.
Ich habe jetzt an die 30-40min gebraucht um die 90 Zeilen Code von Werner im Detail zu verstehen und nachzuvollziehen.
Aber sieht so, die Komplexitaet von c++ code (Schreibstil)in der Realitaet aus und ihr braucht mit den Augen nur einmal rueberfliegen und koennt alles verstehen?
bedenke bitte, ich das seit Jahren (Jahrzehnten) beruflich mache, und Du - so vermute ich - noch relativ am Anfang stehst. Es erwartet auch niemand von einem Tischler-Lehrling im ersten oder zweiten Lehrjahr, dass er eine geschwungene Holztreppe inklusive Geländer entwerfen und bauen kann.
Von daher brauchst Du nicht geschockt zu sein, das ist ganz normal. Und es freut mich, dass Du den Code immerhin verstanden hast. Das Muster ist immer das gleiche. Struktur anlegen, um eine Datenelement unterzubringen (hier Entry , bzw. std::pair<string,Entry> ), Extraktor dazu schreiben ( operator>> ), passenden Container wählen (hier std::map ) und dann Lesen-Prüfen-und-rein in den Container. Etwas Rahmenwerk drumherum und ggf. ein Helferlein (hier get_content ), um Redundanzen abzufangen und - ja und, um den Code lesbarer zu gestalten. Letzteres setzt natürlich voraus, dass man die Mechanismen dahinter kennt.
@SeppJ, @Arcoth: Ihr habt natürlich recht - ich kann nicht mehr anders Ich gebe ja zu, die Zeile 71 ist Geschmacks- und Gewohnheitssache.
Nehmen wir mal die Zeilen 51-53
string account;
for( Entry e; in >> get_content( ACCOUNT, account ) >> e; )
database[account] = e;
es würde mir echt schwer fallen, satt dessen z.B. so etwas hin zuschreiben:
for(;;) {
string account;
Entry e;
in >> get_content( ACCOUNT, account );
in >> e;
if( !in.fail() )
break;
database[account] = e;
}
ich würde so was hier nicht posten.
SeppJ schrieb:
Werner ist einer der wenigen hier im Forum, die sich richtig gut mit den IOStreams auskennen ..
Auf der einen Seite finde ich das ja nett, dass ich hier als Experte gehandelt werde, aber auf der anderen Seite finde ich gar nicht gut, dass sich nicht viel mehr Leute mit Streams auskennen - und das ist nicht nur im Forum so.
Früher habe ich mal gelernt: Ein Programm ist Eingabe-Verarbeitung-Ausgabe - d.h. Ein- und Ausgabe sind also rudimentär und in jedem Programm vorhanden und das funktioniert in C++ eben mit Stream und Streambuf. Ich fänd's gut wenn mehr Leute damit arbeiten - schon wegen einer gewissen Standardisierung.
Gruß
Werner