Aktuelle Zeit: 28.03.2024, 11:14

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: coding conventions
BeitragVerfasst: 31.08.2007, 14:18 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
so zu diesem thema würd ich jetzt einfach mal nen vorschlag machen, obwohl das meiste davon sowieso jeder macht..
erste priorität des codes: lesbarkeit/klarheit und dann irgendwann geschwindigkeit..
(wir sind ja keine obfuscating-code challenge)
  • whitespaces werden großzügig verwendet
  • { und } kriegen eine eine eigene zeile außer es tut der übersichtlichkeit keinen abbruch, wie zb bei }else{
  • die einrückung beträgt 4 leerzeichen (kein tabulator)
  • nur eine anweisung pro zeile
  • namen für funktionen und variablen fangen klein an, für klassen, aufzählungen, strukturen groß
  • kommentare nur mit //, } am ende eines langen blocks kriegen auch nen kommentar
  • natürlich sind variablen-namen und kommentare sinnvoll gewählt/verteilt..
  • jede datei kriegt einen head-comment
  • datei-endungen sind .h und .cpp
  • die dateien heißen wie die klassen darin
  • nur klassen-deklaration im header, KEINE definition!! selbst inline-funktionen! (ausnahme: leere funktionen, wie zb destruktoren)
  • keine makros, sondern inline funktionen
  • keine defines, sondern const-vars
  • überhaupt const am besten ständig verwenden ;)
  • dasselbse gilt für assert (lerne es lieben) (und wenn möglich invariant/valid-prüfungen)
  • späte variablen-deklaration. erst wenn man sie braucht.
  • konstruktoren mit initialisierung (ein leerer der nur initialisiert kann auch inline deklariert werden).. alles! initialisieren
und zum svn: erst lokal testen und nur lauffähigen code hochladen!!
last not least: keine diskussion über die ungarische notation! bitte

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 15:02 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
frodenius hat geschrieben:
[*]die einrückung beträgt 4 leerzeichen (kein tabulator)


Das ist doch total abartig und speicherverschwendung und dauert m.E. viel zu lange.
Wenn man durchgehend nur Tabluatoren benutzt, dann schadet das der lesbarkeit kein bisschen.

Aber der Rest ist sinnvoll und sollte auch so verwendet werden.
Du hättest auch einfach sagen können, dass die Irrlicht Coding Rules gelten ;)

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 15:20 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Also teilweise kann ich dem nicht gerade zustimmen...

Zu den Whitespaces:
Tabs zum Einrücken, Leerzeichen zum Formatieren, nach Möglichkeit Begrenzung auf ~100 Zeilen (80 ist ein bisschen wenig, ich denke, niemand benutzt hier nen Konsoleneditor):
Code:
int thisIsAVeryLongFunction(int param1,
                                              int param2,
                                              int param3)
{
<TAB>funktion1();
<TAB>if(a)
<TAB>{
<TAB><TAB>function2();
<TAB>}
}


Zitat:
{ und } kriegen eine eine eigene zeile außer es tut der übersichtlichkeit keinen abbruch, wie zb bei }else{

Warum die Ausnahme? Den Klammern grundsätzlich eine eigene Klammer zu geben ist konsistenter und einfacher zu lesen.
Zitat:
jede datei kriegt einen head-comment

Der braucht dann auch eine einheitliche Form. Autor, Copyright und Lizenz etc gehören auch rein.

Zitat:
nur klassen-deklaration im header, KEINE definition!! selbst inline-funktionen! (ausnahme: leere funktionen, wie zb destruktoren)

Sry, wenn das jetzt nicht stimmt, aber: afaik benötigen manche Compiler zum inlinen die Definition sofort, und zumindest, wenn Teile als Library ausgelagert werden, ist das auch notwendig.
Dazu kommen natürlich auch Templates.

Zitat:
späte variablen-deklaration. erst wenn man sie braucht.

imho von Fall zu Fall nicht unbedingt sinnvoll. Zumindest ist es oft übersichtlicher, am Beginn eines Codeblocks alle darin enthaltenen Variablen aufgelistet zu haben.

Zitat:
namen für funktionen und variablen fangen klein an, für klassen, aufzählungen, strukturen groß

Das muss noch weiter spezifiziert werden.
Das da benutze ich in meinem Code vorzugsweise:
thisIsAFunction();
class ClassName;
int thisisavariable; // Unterstriche sind hier bei längeren Namen sinnvoll
enum ESomeEnum
{
ESE_ValueOne = 0,
ESE_ValueTwo
}

Zitat:
überhaupt const am besten ständig verwenden ;)

Wenn man zu viele consts hat, macht man imho etwas falsch :)

Zitat:
Das ist doch total abartig und speicherverschwendung und dauert m.E. viel zu lange.

Gerade die Argumente sind imho nebensächlich. Dauert zu lange? Ein gescheiter Editor regelt das. Speicherverschwendung? Die paar Bytes?
Wichtiger ist imho, dass jeder mit Tabs seine eigene Tab-Breite einstellen kann. Deswegen sollten imho Leerzeichen nur für darüber hinausgehende Formatierung sein.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 15:45 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
thephoenix hat geschrieben:
Zitat:
späte variablen-deklaration. erst wenn man sie braucht.

imho von Fall zu Fall nicht unbedingt sinnvoll. Zumindest ist es oft übersichtlicher, am Beginn eines Codeblocks alle darin enthaltenen Variablen aufgelistet zu haben.

naja... Stroustrup schreibt, dass variablen erst dann deklariert werden sollten, wenn sie benutzt werden

thephoenix hat geschrieben:
Zitat:
Das ist doch total abartig und speicherverschwendung und dauert m.E. viel zu lange.

Gerade die Argumente sind imho nebensächlich. Dauert zu lange? Ein gescheiter Editor regelt das. Speicherverschwendung? Die paar Bytes?
Wichtiger ist imho, dass jeder mit Tabs seine eigene Tab-Breite einstellen kann. Deswegen sollten imho Leerzeichen nur für darüber hinausgehende Formatierung sein.


aus den paar bytes können schnell mal ein paar kilobyte/megabyte werden... wir reden hier schließlich von min. 4 bytes pro zeile... und ich denke nicht, dass ein größeres projekt unter 10.000 zeilen bleiben wird...
und für die lesbarkeit des codes spielt es keine rolle, ob da jetzt 4 leerzeichen stehen, oder ein tab, dass vom editor als 3 leerzeichen interpretiert wird.
wenn irgendwelche ascii zeichnungen im spiel sind, dann sind leerzeichen ja sinnvoll, aber ich sehe einfach keinen sinn darin, anstatt einmal auf tab zu hämmern 4mal auf space zu drücken...

oder hättest du lust sowas mit leerzeichen zu formatieren
Code:
function()
{
    if()
    {
         for()
         {
              // gaaanz langer code der jedes mal mit 14(!!!) leerzeichen eingerückt werden muss
         }
    }
}

allein dieser kleine pseudo code würde 33bytes "zuviel" verbrauchen

EDIT:
grrr... ich sollte mal wieder mehr schlafen... mir is grad aufgefallen, dass man ja bei der autoeinrückung einstellen kann, obs tabs oder leerzeichen sein sollen -.-*
Aber mir bleibt der sinn dabei trotzdem schleierhaft

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 15:49 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Zitat:
aber ich sehe einfach keinen sinn darin, anstatt einmal auf tab zu hämmern 4mal auf space zu drücken...

Ich denke, alle guten Editoren lassen sich in die Richtung umstellen (ich benutze gedit, der erkennt sogar automatisch, welchen Tabstil er in der derzeitigen Datei benutzen soll, installiert habe ich hier auch noch kate, das rückt bei Wunsch sogar komplett automatisch ein, da sollte es ähnlich mächtige Programme für Windows geben). Übrigends glaube ich auch kaum, dass die Codegröße auch mit Leerzeichen so groß werden wird, dass sie ein größeres Problem darstellen wird. Natürlich wird der Code unnötig aufgebläht, aber problematisch isses wohl noch nicht.

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 16:00 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
thephoenix hat geschrieben:
Natürlich wird der Code unnötig aufgebläht, aber problematisch isses wohl noch nicht.


eben unnötig ;)
Also wenns nach mir gehen würde: tabulatoren

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 18:25 
Offline

Registriert: 27.03.2007, 16:53
Beiträge: 33
Wohnort: Chemnitz
Ich muss mich mal kurz einmischen :lol:

Auch wenn ich ZehScharper bin und von C++ Editoren nicht viel weiß.
Kann ich mir doch aber vorstellen das es bei euch, auch die Option gibt Tabulatoren mit Leerzeichen auffüllen...?!
So kann jeder von euch, die Tab weiter benutzten und es sind aber Lerrzeichen drin! :D

_________________
Develop On System:
-WindowsXP Prof.
-Microsoft .NET2005 | Framework2.0 (C#)
-using IrrlichtNetCP (.NET Wrapper for Irrlicht)

<<Because it makes FUN>>


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 19:15 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Zitat:
Kann ich mir doch aber vorstellen das es bei euch, auch die Option gibt Tabulatoren mit Leerzeichen auffüllen...?!
So kann jeder von euch, die Tab weiter benutzten und es sind aber Lerrzeichen drin! :D

Davon reden wir ja gerade :p
Genau das möchte ich aber nicht, ich möchte schon Tabs in den Dateien drin haben und keine Leerzeichen...

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 19:25 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
jaja also tabulatoren.. ich mein ja nur das bei einer "offiziellen" darstellung des codes der tabulator 4 zeichen entsprechen sollte..
Zitat:
Warum die Ausnahme? Den Klammern grundsätzlich eine eigene Klammer zu geben ist konsistenter und einfacher zu lesen.

ok abgesehn davon das der satz widersinnig ist, versteh ich trotzdem was du meinst ;D und bin dafür.
Zitat:
Der braucht dann auch eine einheitliche Form. Autor, Copyright und Lizenz etc gehören auch rein.

is klar, kennt wer ein gutes format?
Zitat:
Sry, wenn das jetzt nicht stimmt, aber: afaik benötigen manche Compiler zum inlinen die Definition sofort, und zumindest, wenn Teile als Library ausgelagert werden, ist das auch notwendig.
Dazu kommen natürlich auch Templates.

also das ist schon richtig nur ist das kein problem weil man das sowieso so schreibt:
Code:
class SomeClass
{
public:
    SomeClass(int sd);
    inline int getData(){return someData;} //so eben nicht
    int getData2(); //sondern so
private:
    int someData;
};
inline SomeClass::SomeClass(int sd):someData(sd)
{
}
inline int  SomeClass::getData2()
{
    return someData;
}


Zitat:
Du hättest auch einfach sagen können, dass die Irrlicht Coding Rules gelten

wusste nicht wo die zu finden sind und obs die überhaupt gibt..

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 19:38 
Offline
Moderator
Benutzeravatar

Registriert: 15.04.2007, 20:20
Beiträge: 505
Wohnort: Reelsen
Zitat:
ok abgesehn davon das der satz widersinnig ist, versteh ich trotzdem was du meinst ;D und bin dafür.

Owned. -.-

Zitat:
nur klassen-deklaration im header, KEINE definition!! selbst inline-funktionen! (ausnahme: leere funktionen, wie zb destruktoren)

Das schließt ursprünglich sowas halt in den Headern auch aus :p

Zitat:
jaja also tabulatoren.. ich mein ja nur das bei einer "offiziellen" darstellung des codes der tabulator 4 zeichen entsprechen sollte..

Akzeptiert :)

Zitat:
Du hättest auch einfach sagen können, dass die Irrlicht Coding Rules gelten

Das hatte ich komplett überlesen... wie ist es dann von wegen eingeschränkter ungarischer Notation?
(CClass, IInterface, EEnum etc)
Ich persönlich würde zumindest das C bei den Klassen weglassen, dass es eine Klasse ist, kann man dann ja an der Schreibweise sehen (erster Buchstabe groß = Klasse/Struct), ich finde das C einfach hässlich. Die Enums sind da imho eher eine Ausnahme, da sie mit dem Rest ja recht wenig zu tun haben.
Ist was, worüber man sich streiten kann, aber da muss auch eine einheitliche Regelung her.

Zitat:
is klar, kennt wer ein gutes format?

Wie wärs ungefähr damit:
Code:
/*
Copyright (C) <Jahr> <Autor>
Teile (C) <Jahr> <zusätzlicher Autor>

<Lizenzhinweis... was wird das eigentlich für eine Lizenz?>
*/

/*
<Dateiname>

<Beschreibung>
zB.:
Basisklasse mit einigen Funktionen für xy.
*/



Ansonsten sollte alles, was hier entsteht, in eine Datei ins SVN...

_________________
Meine Gameengine :)
Bild


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 19:53 
Offline
Moderator
Benutzeravatar

Registriert: 11.03.2007, 20:25
Beiträge: 556
Wohnort: Frankfurt/Main
lizenz..
gute frage...
wollen wir ne art gpl oder so? in etwa dass jeder den code verändern darf aber nur im rahmen des projekts..?

_________________
yo. life's so bloody short.
Ihr dachtet Schulfernsehn sei die ultimative Folter? Falsch: Fahrstuhlmusik, extra leise.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: coding conventions
BeitragVerfasst: 31.08.2007, 20:01 
Offline
Newsposter
Benutzeravatar

Registriert: 12.03.2007, 10:42
Beiträge: 338
Wohnort: Berlin
ja das wird wohl das beste sein
^^


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de