PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [C++]Wie programmiere ich sauber und übersichtlich?


Gast
2006-04-28, 14:40:16
Kann jetzt mitlerweile halbwegs gut in C++ programmieren und nun werden die Programme auch leicht mal über 500 Zeilen mit mehreren Klassen ...

Leider konnte ich bisher nichts finden, wie man übersichtlich und sauber programmiert, Klassen in andere Dateien auslagert ... Vielleicht hab ich auch einfach nur unter den falschen Begriffen gesucht. Könnte mir vielleicht jemand weiterhelfen?

Hardwaretoaster
2006-04-28, 14:55:52
Ich bin jetzt keiner, der behaupten kann C++ zu beherrschen, aber prinzipiell:
-Code sauber fromatieren udn ruhig mal ein Kommentar mehr, als eins zu wenig, kann durchaus helfen, wenn man sichd as Ganze irgednwann mal wider anschauen muss.

Ansonsten gehe ich jetzt mal ein wenig von C udn auch anderen Sprachen aus, da hat man doch oben immer einen Teil, von man Kalsen einbidnen kann, nicht nur vorgefertigte sondern auch selbstgeschriebene, beschäftige dich mal damit.

Unter Win sind auch dll vielleicht noch interessant...

Was hast du denn vor?

Trap
2006-04-28, 15:11:29
Prinzipiell grade in C++ wichtig:
-Saubere Aufteilung in .h und .cpp
-Abhängigkeiten so organisieren, dass man bei Änderungen möglichst wenige .cpp-files neu kompilieren muss

Generell sinnvoll:
-refactoring
-Funktionen möglichst so schreiben, dass sie keine Nebenwirkungen haben
-globale Variablen sind meistens Pfusch, irgendwann möchte man 2 "was-auch-immer" benutzen (z.B. für multithreading) und darf dann anfangen alles zu durchsuchen was von welchen Daten abhängt

Gast
2006-04-28, 15:21:20
Genau daran scheitert es schon. Was teil ich in .h und .cpp auf und wie binde ich alles sinnvoll in das Programm ein?

Ich hab nichts bestimmtes vor, will einfach nur mal lernen, wie man große Programme aufteilt, bzw. welche Möglichkeiten man hat, Programme übersichtlich zu halten

Gast
2006-04-28, 17:09:03
Eigentlich ist das ganz einfach.
Beispiel:

"Hauptdatei" z.B. main.cpp oder halt ein sinnvoller name der den zweck beschreibt.

#include <iostream> // Einbinden von fertigen Bibliotheken

#include "liste.h" // selbst erstellte Dinge einbinden

void main( ... )
{
CList Liste = new CList();
//...
//...

return 0;
}


Header eine einfach verketteten Liste als Bsp.
liste.h

// Auch hier lässt sich was einbinden falls es begraucht wird
//#include <>
//#include ""

class CList()
{
private:
//....

public:
add_element(element e);
}; // <-- diesen Semikolon nicht vergessen sonst kann man verrückt werden *gg*


Zu liste.h gehörende Datei mit ihren Definitionen
liste.cpp

#include "liste.h"
CList::add_element(element e);
{
// mach was vernünftiges
}


Vereinfacht gesagt macht der Compiler vorm kompilieren nichts anderes als den Inhalt der *.h Dateien in die *.cpp Dateien reinzukopieren.

Aber Vorsicht: Falls du weißt was Templates sind, dann bedenke dass sich diese nicht in Header und Cpp trennen lassen. Warum auch immer aber es geht nicht.

Coda
2006-04-28, 18:36:15
Gast[/POST]']Aber Vorsicht: Falls du weißt was Templates sind, dann bedenke dass sich diese nicht in Header und Cpp trennen lassen. Warum auch immer aber es geht nicht.
http://66.249.93.104/search?q=cache:WZaZU6t7H5cJ:www.gotw.ca/publications/mill23.htm
http://66.249.93.104/search?q=cache:TUSMjs6Yd3UJ:www.gotw.ca/publications/mill24.htm

Gast
2006-04-28, 18:47:35
Werden normale Funktionen eigentlich auch ausgelagert, oder bleiben die in der .cpp, in der sich auch dich main befindet?

Coda
2006-04-28, 19:29:14
Ja.

Hardwaretoaster
2006-04-28, 20:23:07
Woher soll man jetzt wissen, ob JA, 1. oder Ja, 2.?? ;D

Matrix316
2006-04-28, 21:25:33
Gast[/POST]']Werden normale Funktionen eigentlich auch ausgelagert, oder bleiben die in der .cpp, in der sich auch dich main befindet?

Theoretisch kannst du alles auslagern in cpp und h Dateien, auch normale Funktionen. Im Header File halt die deklarationen und im cpp File die Funktionsdefinitionen. Problematisch wirds nur mit globalen Variablen, welche im Hauptfile definiert sind und eine Funktion nutzt, welche ausgelagert werden soll...

zeckensack
2006-04-28, 22:23:54
Matrix316[/POST]']Theoretisch kannst du alles auslagern in cpp und h Dateien, auch normale Funktionen. Im Header File halt die deklarationen und im cpp File die Funktionsdefinitionen. Problematisch wirds nur mit globalen Variablen, welche im Hauptfile definiert sind und eine Funktion nutzt, welche ausgelagert werden soll...extern

Matrix316
2006-04-29, 12:05:57
Oder so. Stimmt. :)