[ODE] Coding style in ODE
Jon Watte (ODE)
hplus-ode at mindcontrol.org
Mon Apr 9 11:36:34 MST 2007
Actually, if all of ODE were patched at once with astyle, with no other
changes included in that check-in, that would be fine by me.
The biggest problem comes when someone re-formats AND applies changes in
the same patch. If we take an incremental approach, that will inevitably
happen.
Cheers,
/ h+
Remi Ricard wrote:
> Hi,
>
>
> I already sent messages to this list about creating a coding style for
> ODE. I just want to tell everyone that I don't want to impose my style.
> I don't care about the style to be used I just want to be able to set my
> editor (emacs) to indent and present the file in a nice and standardized
> manner.
>
>
> Some people on the list talked about astyle (ref:
> http://astyle.sourceforge.net/) I did some test and this application
> looks really good. Since the code is available for windows, Linux and
> OSX. Almost everyone could be able to use it.
>
>
> I said earlier that I will try to create a standard for ODE by looking
> at the code. I did my homework and created a configuration file for
> astyle. (see below).
>
> What I want to suggest is this.
>
> Since I know that updating all the files at once will create some
> problem when doing a "svn diff" to look at "real" code change since real
> code change will be buried deep in cosmetic change.
>
> I suggest to apply astyle only on part of code to be patched.
> I will take longer to have all the code to follow the new "ODE style"
> but this will decrease the code change pollution.
>
> This is my method to create a patch following the new coding style
> - Create a new repository (called sandbox_astyle)
> - Make your change to this sandbox
> - Apply astyle to the modified files
> - Create a new repository (called sandbox_ode)
> - Merge only the part that include bug fix or new code from
> sandbox_atstyle to sandbox_ode.
> - Create a patch with sandbox_ode.
> - Submit patch to SourceForge.
>
>
> You have below the options file needed by astyle and also small test
> cases with the code in a strange format with code in a standardized format.
>
> As I said earlier I'm open to discussion about what the new formatting
> should be but if possible we should try to keep the formatting in a way
> that can be generated/verified by astyle.
>
> Remi
>
> --------------------------
> Test file below
>
> /**
>
> *****************************************************************************
> * This file test the formating done by astyle
> *
> * ref: http://astyle.sourceforge.net/
> *
> * Copyright GPL
> *
> * @file ode_test_astyle.cpp
> *
> * @author Remi Ricard
> *
> * @par Created:
> * 05 Apr 2007
> *
> * This should by saved and used as the astyle's options file
> # astyle formatting options file -- start --
> # ------------------------------------------
> # set default parsing to: Kernighan&Ritchie style formatting/indenting.
> # Break brackets from class and function declarations, but attach
> brackets to pre-block command statements.
> brackets=linux
> # set 2 spaces per indent
> # Ex:
> # if (isFoo) {
> # bar();
> # }
> indent=spaces=2
> # indent switch blocks
> indent-switches
> # ################################################
> # } else {
> # becomes
> # }
> # else {
> brackets=break-closing
> # suffix of original files should be .pre
> suffix=.orig
> max-instatement-indent=40
> # Insert space padding around parenthesis on the outside only
> pad=paren-out
> # Don't break complex statements and multiple statements residing on a
> one-line=keep-statements
> # Don't break one-line blocks.
> one-line=keep-blocks
> # astyle formatting options file -- end --
> # ----------------------------------------
> *
> *
> *************************************************************************///
> //234567890123456789012345678901234567890123456789012345678901234567890123456789
> // 1 2 3 4 5 6 7
>
>
> //
> ============================================================================
> // Test 1:
> // Identation should be 2 character
> // Should becomes
> // int Fct2()
> // {
> // if (1)
> // return;
> // }
> int Fct()
> {
> if (1)
> return;
> }
>
> //
> ============================================================================
> // Test 2:
> // In a class statement Don't ident 'public:', 'protected:' and 'private:'
> // Should becomes:
> // class myClass1 {
> // public:
> // int myData1;
> // };
> class myClass {
> public:
> int myData1;
> };
>
> //
> ============================================================================
> // Test 3:
> // Break brackets from class and function declarations, but attach
> // brackets to pre-block command statements.
> // Should becomes:
> // int Fct1()
> // {
> // if (1) {
> // int b = 3;
> // }
> // }
> int Fct() {
> if (1)
> {
> int b = 3;
> }
> }
>
> //
> ============================================================================
> // Test 4:
> // Break closing header (e.g. 'else', 'watch')
> // Should becomes:
> // int Fct1()
> // {
> // if (1) {
> // return 3;
> // }
> // else {
> // return 4;
> // }
> // }
> int Fct1()
> {
> if (1)
> {
> return 3;
> } else {
> return 4;
> }
> }
>
>
> //
> ============================================================================
> // Test 4:
> // Indent 'switch' block
> // N.B. I found both in the different file but indentation was prevalent
> // Should becomes:
> // int Fct(int arg) {
> // switch (arg) {
> // case 0:
> // arg +=1;
> // break;
> // case 1:
> // {
> // arg +=2;
> // break;
> // }
> // }
> // return arg;
> // }
> int Fct(int arg)
> {
> switch (arg)
> {
> case 0:
> arg +=1;
> break;
> case 1:
> {
> arg +=2;
> break;
> }
> }
>
> return arg;
> }
>
> //
> ============================================================================
> // Test 5:
> // Don't indent 'case' block
> // Should becomes:
> // int Fct(int arg)
> // {
> // switch (arg)
> // {
> // case 0:
> // arg +=1;
> // break;
> // case 1:
> // {
> // arg +=2;
> // break;
> // }
> // }
> // return arg;
> // }
> int Fct(int arg)
> {
> switch (arg)
> {
> case 0:
> arg +=1;
> break;
> case 1:
> {
> arg +=2;
> break;
> }
> }
>
> return arg;
> }
>
> //
> ============================================================================
> // Test 6:
> // Don't add extra indentation to backet
> // Should becomes:
> // int Fct(int arg)
> // {
> // if (1) {
> // return 1;
> // }
> //
> // return 0;
> // }
> int Fct(int arg)
> {
> if (1) {
> return 1;
> }
>
> return 0;
> }
>
> //
> ============================================================================
> // Test 7:
> // Indent a maximum of # spaces in a continuous statement, relative to
> the previous line
> // Should becomes:
> // int fooArray[] = { red,
> // green,
> // blue };
> //
> // Function(aRealllllllllllllllllyLongggggggArggggggggNameeeeeeee1,
> // aSecondReallllllllllllllyLongggggArggggggNameeeeeeee1);
> // aSecondRealllllllllllllllllyLongggggggArggggggggNameeeeeeee1);
> int fooArray[] = { red,
> green,
> blue };
> Function(aRealllllllllllllllllyLongggggggArggggggggNameeeeeeee1,
> aSecondRealllllllllllllllllyLongggggggArggggggggNameeeeeeee1);
>
> //
> ============================================================================
> // Test 8:
> // Insert space padding around parenthesis on the outside only
> // Should becomes:
> // int Fct()
> // {
> // if (isFoo (a, b) )
> // bar (a, b);
> // }
> int Fct()
> {
> if (isFoo(a, b))
> bar(a, b);
> }
>
> //
> ============================================================================
> // Test 9:
> // Don't break complex statements and multiple statements residing on
> // a single line.
> // Should stay:
> // int Fct()
> // {
> // int a = 3; cout<<a<<endl;
> // if (a) a += 1; return a;
> // }
> int Fct()
> {
> int a = 3; cout<<a<<endl;
> if (a) a += 1; return a;
> }
>
> //
> ============================================================================
> // Test 9:
> // Don't break one-line blocks.
> // Should stay:
> // void setGravity (dReal x, dReal y, dReal z)
> // { dWorldSetGravity (_id,x,y,z); }
>
> void setGravity (dReal x, dReal y, dReal z)
> { dWorldSetGravity (_id,x,y,z); }
> _______________________________________________
> ODE mailing list
> ODE at ode.org
> http://mooshika.org/mailman/listinfo/ode
>
>
>
More information about the ODE
mailing list