view CODING @ 1091:b6e7d5ce18a2

Previous patch (revision 1185) for the comments-related segfault was incomplete, and as such, it broke keywords in files whose metadata had keywords but no comments. This patch fixes that (and still fixes the case where one searches on comments and hits a file with keywords but no comments). Lastly, I would imagine that there exists a failure mode where one searches for a keyword and hits a file with a comment but no keyword, and I imagine this patch should fix that case as well. Patch by Omari Stephens (aka xsdg).
author zas_
date Thu, 06 Nov 2008 20:01:32 +0000
parents 83d3abd80b64
children 8b89e3ff286b
line wrap: on
line source

GPL header, in every file, like this:

/** @file relativ/path/with/this/file/name.c
 * Short description of this file.
 * @author Author1
 * @author Author2
 *
 * Optionaly detailed description of this file
 * on more lines.
 */
                                                                                
/*
 *  This file is a part of Geeqie project (http://geeqie.sourceforge.net/).
 *  Copyright (C) 2008 Geeqie team
 *
 *  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 2 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 */

--------------------------------------------------------------------------------

svn change-log:

Use whole sentences begins with Capital letter. For each modification use new line.
Or you can write the theme, colon and then every change on new line, begin
with "- ".

Example:

I did some bugfixes.
Library:
- the interface was modified
- new functions were added

--------------------------------------------------------------------------------

sources:

Indentation: tabs
Names of variables & functions: small_letters
      of defines: CAPITAL_LETTERS

Try to use explicit variable and function names.


Try not to use macros.
Use EITHER "struct foo" OR "foo"; never both

Conditions, cycles:

if (<cond>)
	{
	<command>;
	...
	<command>;
	}
else
	{
	<command>;
	...
	<command>;
	}
                                                                                
if (<cond_very_very_very_very_very_very_very_very_very_long> &&
    <cond2very_very_very_very_very_very_very_very_very_long)
    <the_only_command>;

switch (<var>)
	{
	case 0:
		<command>;
		<command>;
		break;
	case 1:
		<command>; break;
	}

for (i = 0; i <= 10; i++)
	{
	<command>;
	...
	<command>;
	}
	

Functions:

gint bar(<var_def>, <var_def>, <var_def>)
{
	<command>;
	...
	<command>;

	return 0; // i.e. SUCCESS; if error, you must return minus <err_no>
}

void bar2(void)
{
	<command>;
	...
	<command>;
}

Pragma: (Indentation 2 spaces)

#ifdef ENABLE_NLS
#  undef _
#  define _(String) (String)
#endif /* ENABLE_NLS */

Headers:

#ifndef _FILENAME_H

--------------------------------------------------------------------------------

Use spaces around every operator (except ".", "->", "++" and "--");
        unary operator '*' and '&' are missing the space from right;
        (and also unary '-').
As you can see above, parentheses are closed to inside, i.e. " (blah blah) "
    In "function(<var>)" there are no space before '('. 
You MAY use more tabs/spaces than you OUGHT TO (according to this CodingStyle), if
        it makes your code nicer in being verticaly indented.
Variables declarations should be followed by a blank line and should always be
at the start of the block.

--------------------------------------------------------------------------------

Use glib types when possible (ie. gint and gchar instead of int and char).
Use glib functions when possible (ie. g_ascii_isspace() instead of isspace()).
Check if used functions are not deprecated.

--------------------------------------------------------------------------------

Documentation: use Doxygen