Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

121

19.09.2006, 18:31

Und was ist das?

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Spielfigur
{
public:
    PH3DObjekt Mod;
    float Kraft;
    bool Steht;
    bool Lebt;

    Spielfigur(Level Lev);
    void Reset(Level Lev);
    void Move(Level Lev);
    void Render(PH3DSzene Szene);
    bool NextLevel(Level Lev);
}; 


Außerdem, warum sollen denn die PH3DDev public sein?

Phili

unregistriert

122

19.09.2006, 18:35

@grek40
Ach so, sry, habs nur so überlesen und gleich an global gedacht... :shock: .
naja, also, was daran sehr negativ sein soll bleibt mir erlichgesagt verborgen. Ich mein, ich weiß schon, wofür private benutzt wird, aber ich komm so ganz gut zurecht...

Zitat

Definition der Memberfunktionen nicht inline aber innerhalb des Headers. Wenn du das irgendwann mal (in ungünstiger Headerreihenfolge) in mehrere Quelldateien zugleich includierst seh ich schon die absolut unnötige Fehlerliste erscheinen - da helfen auch die Includeguards nicht mehr.

Damit hab ich noch nie ein problem gehabt.

Anonymous

unregistriert

123

19.09.2006, 18:38

Zitat von »"Phili"«

@grek40
Ach so, sry, habs nur so überlesen und gleich an global gedacht... :shock: .
naja, also, was daran sehr negativ sein soll bleibt mir erlichgesagt verborgen. Ich mein, ich weiß schon, wofür private benutzt wird, aber ich komm so ganz gut zurecht...

Zitat

Definition der Memberfunktionen nicht inline aber innerhalb des Headers. Wenn du das irgendwann mal (in ungünstiger Headerreihenfolge) in mehrere Quelldateien zugleich includierst seh ich schon die absolut unnötige Fehlerliste erscheinen - da helfen auch die Includeguards nicht mehr.

Damit hab ich noch nie ein problem gehabt.


Einsicht wäre ein weg zur Besserung... Auch wenn du damit noch kein
Problem gehabt hast, was ein riesen Wunder ist, solltest du echt mal
versuchen ein paar Grundregeln zu beachten und auch ein wenig mehr
Wert auf Sicherheit zu legen. Ich habe viel von GGD gelernt,
vielleicht solltest du dich da öfters mal umschauen.

Phili

unregistriert

124

19.09.2006, 18:47

@Riddick
Ich bleib erstmal bei meiner Art zu coden, du bei deiner. Wenn ich irgendwann an Grenzen stoße, die ich mit meiner Art nicht überwinden kann, sehen wir weiter. Bis dahin wird mir die "Einsicht" wohl fehlen.

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

125

19.09.2006, 18:49

Riddick
Sehe ich das richtig, dass dein Mario noch nicht hüpfen darf? ;)

Anonymous

unregistriert

126

19.09.2006, 18:49

Zitat von »"Phili"«

@Riddick
Ich bleib erstmal bei meiner Art zu coden, du bei deiner. Wenn ich irgendwann an Grenzen stoße, die ich mit meiner Art nicht überwinden kann, sehen wir weiter. Bis dahin wird mir die "Einsicht" wohl fehlen.


Tu dir wenigstens einen Gefallen, bewahr deine Codes auf und wenn du
dann ordentlich codest, schau dir das mal an, dann wirst du uns verstehen :p

Phili

unregistriert

127

19.09.2006, 18:50

@Riddick
Das geht mir sowieso alle 2 Monate so ;)

128

19.09.2006, 22:58

Ich muss euch zustimmen. Oftmals ist der Coding-Stil Grund für zahllose Abstürze, sei es wegen auftretenden NullPointerExceptions, Stack-Overflow und ähnliche Fehler, die zwar meistens sofort beim Testen auftreten und sich als Anfänger mit vielem Suchen und Probieren nach mehr oder weniger kurzer Zeit beheben lassen.

Einige Fehler tauchen aber erst auch auf, wenn man das Programm wirklich testet und wer als Hobby-Coder hat schon Zeit und Lust sein Programm so aufwendig zu testen, wie es nötig wäre. Und dann kommen die Fehler halt wenn der User irgendwas gemacht hat, was man so nicht vorgesehen hat. Ein Crash und schon verabschiedet sich das Programm und wenn man Pech hat und vielleicht einen alten PC mit Windows 98 auch der ganze PC. Mit ein bisschen unkonventionellen Methoden, was Speicher, Variablen und ASM-Code betrifft, kriegt man als Anfänger (und auch als Profi) jedes Programm und Betriebssystem zum Crashen.

Deshalb sollte man sich als Coder auch mal einige Tipps von Fortgeschrittenen oder Profis annehmen und vor allem auch mal folgende Themen anschauen:
- new und delete, Speichermanagement
- Konstruktoren, (virtuelle) Konstruktoren
- Zuweisungsoperatoren
- public, private, protected
- const
- Parameterübergabe (via Referenz, via Wert)
- Referenzen
- Pointer
- Default Parameter und Überladen von Funktionen
- Namensräume
- inline
- Vererbung, Polymorphie
Dazu schaut man sich am besten viel, viel Code an. Gute Beispiele, aus denen man einiges lernen kann sind Boost oder Loki, aber auch die gängigen Engines, die als Spieleprogrammierer bestimmt besonders interessant sind, wie zum Beispiel OGRE oder den OpenSceneGraph.

Tu das bitte, dein Code sieht wirklich aus, als wolltest du C++ vergewaltigen, aber mein erster Code war wohl auch nicht besser.

Dann gibt es natürlich zahlreiche Bücher:
Effektiv C++
http://www.amazon.de/Effektiv-C%2b%2b-pr…=UTF8&s=gateway
Mehr Effektiv C++ programmieren
http://www.amazon.de/Effektiv-programmie…=UTF8&s=gateway
Modernes C++ Design
http://www.amazon.de/Modernes-Generische…=UTF8&s=gateway

Irgendwann wird das alles ins Blut übergeben, und dann kommt das, was meiner Meinung nach wirklich den schlechten vom guten Code unterscheidet. Design und Design-Pattern, wie zum Beispiel folgende:
- Singleton
- Factories
- Bridge
- Adaptr
- Visitor
- Iterator
- Proxy
Aber man kann auch das Verwenden von Interfaces, Plugin-Systeme, Module, die gute Verwendung von IDE-abhängigen Features, wenn man zum Beispiel nur mit Visual Studio programmiert, ist da schon einiges möglich, und auch die geringe Abhängigkeit zwischen Module durch das Verwenden von Entwurfsmuster zum guten Objektorientierten Design zählen. Die geschickte Verwendung von Vererbung und Polymorphie gehört natürlich auch dazu.

Meistens hat das Klassendesign zwar keine Auswirkungen auf die Sicherheit, aber dafür viel mehr auf die Erweiterbarkeit und auf die Einfache Verwendung des eigenen Programmcodes.

Und das ist nicht wirklich einfach, da müssen auch gute Coder (ich glaube nicht, dass ich einer bin) jedesmal neu überlegen und es gibt hitzige Diskussionen in Teams über das verwendete Klassen-Design. Tools wie UML und Office Visio helfen sehr dabei.

Hier noch ein paar Bücher zu diesem Thema:
Entwurfsmuster
http://www.amazon.de/Entwurfsmuster-Elem…=UTF8&s=gateway
Entwurfsmuster verstehen
http://www.amazon.de/Entwurfsmuster-vers…2217833?ie=UTF8

Trotz allem Wissen und der Erfahrung der Senior Programmer haben die meisten Programme immer noch sehr viele Fehler, wenn sie auf den Markt kommen.

Von Darkstar One weiß ich aus sicheren Quellen, dass das Spiel mit 549 Bugs und davon 40 Kritischen auf den Markt gekommen ist und wie es mit Windows aussieht, sieht man ja an den vielen Sicherheitsupdates.

Man sollte trotzdem versuchen, durch guten Code alles zu verhindern um sein Programm zu verbessern und den Benutzern großtmöglichen Service und Spaß zu bieten.
Also, hau rein!

Und nicht vergessen: Einfach coden. Jeder schlechte Code, den du produzierst, wird auch guten Code produzieren. Ich hoffe ich kann dir ein bisschen helfen.

Anonymous

unregistriert

129

19.09.2006, 23:06

Danke, hast du schön ausführlich erklärt. ;) Also bei mir habe ich keine
Probleme mit der Sicherheit, da ich mir während des Codens genügend
Gedanken darüber mache, dann hat man am Ende auch nicht soviel
Stress mit dem Debuggen, ich mache es immer sofort, wenn ich einen
Bug finde.

Du hast jetzt schön ausgedrückt, was wir die ganze Zeit versucht haben
Phili zu sagen. Vielleicht bringen längere und genauere Posts ja mehr,
wir werden sehen. :p

130

19.09.2006, 23:34

Ich finde es aber schade, warum man sich anstatt seine Post-Zahl zu pushen nicht einfach mal Zeit nehmen kann, und eine Frage richtig beantwortet. In diesem Fall hätte es vielleicht eine kleine Anekdote über die eigenen schlechten Erfahrungen getan, ein paar kleine Tipps, z.B. dass er erst ein Textadventure oder Pong oder so etwas programmieren soll, und man dann an einem größere Projekt arbeiten kann und dazu vielleicht ein paar Links. Über dieses Anfänger-Phänomen wurden schon zahlreiche Artikel geschrieben. Diese kurzen Posts bringen doch meist nur Unfriede, besonders dann wenn der Diskussionspartner nicht auf dem gleichen Level ist wie der Schreiber des Beitrags und viele Dinge sind den Anfängern ja auch gar nicht klar. Wie oft habe ich es schon erlebt, dass Anfängern nicht klar ist warum eine Klassenvariable private sein sollte und der Zugriff mit get und set geregelt wird. Sachen, die uns alltäglich erscheinen, sind für einen Anfänger schwer zu begreifen und machen eine Diskussion sehr müßig. Hat man einen guten Beitrag geschrieben, sollte man diesen ergänzen und in die FAQ übernehmen, so dass im Besten Fall der unwissende Anfänger gleich in dieselbe schaut oder man auf die FAQ verweisen kann. Ein Satz wie "Dieses Thema wurde schon mal im Forum behandelt, schaue bitte einfach mal in die FAQ" anstatt "Lies die FAQ und streng dein Gehirn an" sorgen dabei gleich für eine bessere Basis.

Trotzdem finde ich es sehr berechtigt auf einfache Fragen wie "Welche Parameter für Funktion xy" nur auf Google, die Dokumentation oder je nach Erfahrung des Coders und Frage auf den Debugger zu verweisen.

Darüber hinaus gibt es auch noch einige sehr gute und anspruchsvolle Threads, die auch in hitzige Diskussionen ausarten dürfen und sollen. Trotzdem sollte man seine Aussagen begründen und belegen können und Worte und Sätze wie "Irgendwie habe ich das gefühl Du hast absolut keinen Plan von der Thematik" oder "Bullshit" vermeiden. Ich weiß nicht, wie ihr mit euren Mitmenschen umgeht, aber die Anonymität eines Forums sollte nicht zu übertriebener Direktheit und provozierende Beiträgen verleiten.

Trotz allem bitte ich jeden Benutzer, insbesondere die Anfänger zu lernen, wie man die vorhandenen Tools wie Debugger, Google, die Dokumentation und das Internet als Informationsquelle benutzt um alle, die sich für bessere oder gute Coder halten und es meist auch sind, lästige Beiträge zu ersparen. Ich wünsche mir ein bisschen mehr Niveau im Ausdruck und Inhalt der Beiträge und bei den Themen einzelnen Themen, die meist nicht über die DirectX Dokumentation hinaus gehen.

Werbeanzeige