Added docs dir, updated TEMPLATE
This commit is contained in:
parent
20348ed1e9
commit
4a36c05134
2 changed files with 4 additions and 1 deletions
94
docs/HACKING
Normal file
94
docs/HACKING
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
|
||||
Coding-style
|
||||
--------------
|
||||
|
||||
Statements
|
||||
----------
|
||||
If only one statement exist in a statement body. Braces should be skipped,
|
||||
but not if the structure is nested or followed by multiple if/else, ex:
|
||||
|
||||
for(i=0; i < 10; i++)
|
||||
for(j=0; i < 10; j++)
|
||||
if (i == j)
|
||||
foo();
|
||||
|
||||
if (a)
|
||||
foo();
|
||||
else if (b) {
|
||||
if (c)
|
||||
bar();
|
||||
} else
|
||||
baz();
|
||||
|
||||
instead you should write the above code as:
|
||||
|
||||
for(i=0; i < 10; i++) {
|
||||
for(j=0; i < 10; j++) {
|
||||
if (i == j)
|
||||
foo();
|
||||
}
|
||||
}
|
||||
|
||||
if (a) {
|
||||
foo();
|
||||
} else if (b) {
|
||||
if (c)
|
||||
bar();
|
||||
} else {
|
||||
baz();
|
||||
}
|
||||
|
||||
Avoid using assignment in if()
|
||||
|
||||
Functions
|
||||
---------
|
||||
We use an extended K&R style, the extension is for functions that can have both there opening bracer on the same line and
|
||||
directly under it but please don't mix em. We allow both but you should chose one and stick with it.
|
||||
You should mimic the syntax used around your code, don't mix both formats in one c file.
|
||||
If you encounter a file with mixed syntax, change it to whatever style you like (you can't break anything ;)
|
||||
|
||||
void foo() {
|
||||
/* body */
|
||||
}
|
||||
|
||||
void bar()
|
||||
{
|
||||
/* body */
|
||||
}
|
||||
|
||||
|
||||
Pointer declaration
|
||||
-------------------
|
||||
this should be done in 2 different ways depending on where it's declared:
|
||||
|
||||
1: variables are declared like `char *str`, not `char * str` or `char* str`.
|
||||
2: function return types are declared like `char* function(...);`
|
||||
|
||||
this syntax forces the most readable code. ex:
|
||||
|
||||
struct list* new_list(char *name);
|
||||
|
||||
this format cleary states that name is a pointer of type char and the function returns
|
||||
a pointer to a struct list
|
||||
|
||||
Naming
|
||||
------
|
||||
|
||||
* Never use CamelCase. UPPERCASE for constants and lowercase for variables,functions,macros. words is separated by underscore.
|
||||
|
||||
* API functions (that have a prototype in a header file) should be prefixed with the header filename.
|
||||
One exception exist and that is when the functionality is realy lowlevel and/or generic enough that it
|
||||
would be redundant to include a prefix. an example of this is a fatal() or die() function that may be prototyped in misc.h.
|
||||
|
||||
* Headerguard defines is written like __PATH_TO_THIS_HEADER_H
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
All API's should be externaly documented in the doc/ directory.
|
||||
|
||||
Things to keep in mind when modify or write code
|
||||
------------------------------------------------
|
||||
|
||||
include and change the comment found in TEMPLATE file, at the top of the .c/.h file
|
||||
|
||||
15
docs/TEMPLATE
Normal file
15
docs/TEMPLATE
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
/* path/to/file - <short description>
|
||||
*
|
||||
* Copyright (C) 2010 <name of author> <email>
|
||||
* Copyright (C) 2002-2010 <name of another author> <email>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* <full description>
|
||||
*/
|
||||
Reference in a new issue