嵌入式GUI FTK编程风格


转载时请注明出处和作者联系方式
文章出处:http://www.limodev.cn/blog
作者联系方式:李先静 <[email protected]>

命名规则

名称要表达出对象的意义。

1.文件名

    * 以ftk开头(demo和测试程序除外)。
    * 单词小写。
    * 多个单词用下划线分隔。

示例:

ftk_window.c
ftk_window.h

2.函数名

    * 以ftk开头(内部函数或工具函数外可以例外)。
    * 单词小写。
    * 多个单词用下划线分隔。

示例:

ftk_window_set_focus
ftk_window_get_focus

3.变量名

    * 单词小写。
    * 多个单词用下划线分隔。
    * 对象以thiz命名。

示例:

int fullscreen
FtkWidget* thiz
int update_disabled

4.结构名/枚举名/联合名

    * 以Ftk开头(C文件内部使用的结构可以例外)。
    * 单词首字大写。
    * 多个单词连写。
    * 接口的私有信息统一用PrivInfo。

示例:

typedef struct _FtkPoint
{
int x;
int y;
}FtkPoint;
 
typedef struct _PrivInfo
{
FtkCanvas*  canvas;
...
}PrivInfo;

7.常量(宏/枚举变量)

    * 以FTK开头(RET_系列除外)。
    * 单词大写。
    * 多个单词用下划线分隔。

示例:

FTK_WIDGET_NORMAL
FTK_WIDGET_FOCUSED


排版规则
1.缩进

    * 以TAB键缩进。
    * TAB键的宽度设置为4。

vim可用下面的设置:

set ts=4
set sw=4
set ai
set ci

2.空行

    * 避免连续多个空行。
    * 函数之间要加空行。
    * return与其它语句之要加空行。
    * 变量声明与执行代码之间要加空行。
    * 逻辑块之间要加空行。

3.空格

    * 操作符两端用加空格
    * 函数参数之间用加空格
    * 用./->等访问成员时,不要加空格。
    * 定义指针时,*与类型之间不要加空格。

可移性

    * 避免使用编译器特有的特性。
    * 避免使用C99等新的特性。
    * 使用FTK包装的函数(如内存管理和字符串操作)
    * 平台相关的函数要抽象后使用。
    * 变量声明要在执行语句之前。
    * 对于在多个平台上运行的代码,要在多个平台编译测试。

稳定性

    * 变量声明时即对其进行初始化。
    * 功能测试通过后,用valgrind检测内存越界和持续内存泄露。


杂项

    * 避免使用全局变量。
    * 内部函数加static


注释规则

    * 用简单明了的代码代替注释。
    * 注释用英文书写。
    * 注释中写背景和原因,而不是重复代码。
    * 文件头注释的格式如下(演示程序、测试程序和自动产生的代码可以例外):

/*
* File: 文件名
* Author: 作者及邮件
* Brief: 说明
*
* Copyright (c) 2009 - 2010 版权
*
* Licensed under the Academic Free License version 2.1
*
* 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.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/
 
/*
* History:
* ================================================================
* date who what
*
*/

你可能感兴趣的:(编程,struct,测试,嵌入式,平台,编译器)