• 嵌入式GUI FTK编程风格



    转载时请注明出处和作者联系方式
    文章出处:http://www.limodev.cn/blog
    作者联系方式:李先静 <xianjimli@gmail.com>

    命名规则

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

    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
    *
    */

  • 相关阅读:
    多轨车皮编序问题
    [Luogu1032] 字串变换
    [POJ1101] The Game
    Linux 下源码编译FFMEG
    交叉编译 tcpdump
    现代电视原理-电视传像原理
    Dos:‘锘緻echo’ 不是内部或外部命令,也不是可运行的程序或批处理文件
    Win7 登入壁纸修改
    Office 2016安装后的优化设置
    Linux 系统目录结构
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167398.html
Copyright © 2020-2023  润新知