Difference between revisions of "C programming/House of Technology C coding policy"

From Teknologisk videncenter
Jump to: navigation, search
m (Indents)
m
Line 1: Line 1:
 
{{In progress}}
 
{{In progress}}
=Variable names=
+
=Naming=
 +
==Variable names==
 
*All variable names should be in lower case.
 
*All variable names should be in lower case.
 
*All variable names should describe purpose and content.
 
*All variable names should describe purpose and content.
Line 7: Line 8:
 
***If you abbreviate and use '''tim0_inst_cnt''' remember to list the abbreviations in the Abbreviation Table.
 
***If you abbreviate and use '''tim0_inst_cnt''' remember to list the abbreviations in the Abbreviation Table.
  
=Function names=
+
==Function names==
 
*All function names should be in lower case.
 
*All function names should be in lower case.
 
*All function names should describe purpose and function.
 
*All function names should describe purpose and function.
Line 31: Line 32:
  
  
=Abbreviations=
+
==Abbreviations==
 
If abbreviations are used - use logical abbreviations and make a abbreviation table
 
If abbreviations are used - use logical abbreviations and make a abbreviation table
 
<source lang=text>
 
<source lang=text>
Line 44: Line 45:
 
*/
 
*/
 
</source>
 
</source>
=Indents=
+
=Programming style=
 +
==Indents==
 
Use K&R or Allman indents. But do it consistently.
 
Use K&R or Allman indents. But do it consistently.
 
===K&R example===
 
===K&R example===
Line 68: Line 70:
 
     bar();
 
     bar();
 
}
 
}
 +
</source>
 +
=Documenting=
 +
==Module headers==
 +
===.c files===
 +
<source lang=c>
 +
/**************************************************************************
 +
  #    #
 +
  ##  ##  ######  #####    ####    ##    #    #  #####  ######  ####
 +
  # # # #  #      #    #  #    #  #  #  ##  #    #    #      #    #
 +
  #  #  #  #####  #    #  #      #    #  # #  #    #    #####  #
 +
  #    #  #      #####  #      ######  #  # #    #    #      #
 +
  #    #  #      #  #  #    #  #    #  #  ##    #    #      #    #
 +
  #    #  ######  #    #  ####  #    #  #    #    #    ######  ####
 +
 +
***************************************************************************
 +
Author..: name <mail@address>
 +
Company.: House of Technology at Mercantec ( http://www.mercantec.dk )
 +
date....: 2012 Nov. 13
 +
***************************************************************************
 +
Abstract: Brief description
 +
Purpose.: To be used for fun to challenge our students making multithreaded
 +
          solutions to break the codes.
 +
***************************************************************************
 +
Cavets..: Real lousy solution generating random numbers with rand()
 +
          Real lousy solution solving missing hits in sub rr. missing
 +
          randomness.
 +
          This program was written in C after years of no C-coding, so
 +
          the generel structure is quite messy.
 +
          It's purpose however is to challenge students so perhaps they
 +
          will improve it.
 +
***************************************************************************
 +
Modification log:
 +
***************************************************************************
 +
License:  Free open software but WITHOUT ANY WARRANTY.
 +
Terms..:  see http://www.gnu.org/licenses
 +
***************************************************************************/
 
</source>
 
</source>
 
[[Category:C]]
 
[[Category:C]]

Revision as of 06:58, 7 June 2012

Naming

Variable names

  • All variable names should be in lower case.
  • All variable names should describe purpose and content.
  • Use _ (underscore) as space.
    • Use int timer0_instance_counter instead of int timer0InstanceCounter
      • If you abbreviate and use tim0_inst_cnt remember to list the abbreviations in the Abbreviation Table.

Function names

  • All function names should be in lower case.
  • All function names should describe purpose and function.
  • Use _ (underscore) as space.
  • Use galaxy_soarsystem_planet approach instead of planet_solarsystem_galaxy
best approach dont use
timer0_start() start_timer0()
timer0_stop() stop_timer0()
timer0_init() init_timer0()
timer1_start() start_timer1()
timer1_stop() stop_timer1()
timer1_init() init_timer1()


Abbreviations

If abbreviations are used - use logical abbreviations and make a abbreviation table

/*Abbreviation Table
disp       == display
dsp        == digital signal processor
tim        == timer
inst       == instance
cnt        == counter

...
*/

Programming style

Indents

Use K&R or Allman indents. But do it consistently.

K&R example

if (x == y) {
    x++;
    foo();
} else {
    x--;
    bar();
}

Allman

if (x == y) 
{
    x++;
    foo();
} 
else 
{
    x--;
    bar();
}

Documenting

Module headers

.c files

/**************************************************************************
  #     #
  ##   ##  ######  #####    ####     ##    #    #   #####  ######   ####
  # # # #  #       #    #  #    #   #  #   ##   #     #    #       #    #
  #  #  #  #####   #    #  #       #    #  # #  #     #    #####   #
  #     #  #       #####   #       ######  #  # #     #    #       #
  #     #  #       #   #   #    #  #    #  #   ##     #    #       #    #
  #     #  ######  #    #   ####   #    #  #    #     #    ######   ####
 
***************************************************************************
Author..: name <mail@address>
Company.: House of Technology at Mercantec ( http://www.mercantec.dk )
date....: 2012 Nov. 13
***************************************************************************
Abstract: Brief description
Purpose.: To be used for fun to challenge our students making multithreaded
          solutions to break the codes.
***************************************************************************
Cavets..: Real lousy solution generating random numbers with rand()
          Real lousy solution solving missing hits in sub rr. missing
          randomness.
          This program was written in C after years of no C-coding, so
          the generel structure is quite messy.
          It's purpose however is to challenge students so perhaps they
          will improve it.
***************************************************************************
Modification log:
***************************************************************************
License:  Free open software but WITHOUT ANY WARRANTY.
Terms..:  see http://www.gnu.org/licenses
***************************************************************************/