Development Specification

Contents

Development Specification#

int bus_count = 1;

Codeing Style#

  • Public header 用 __XXX_H 形式

  • 提倡在作用域开头统一声明变量,而不是即用即声明,方便释放的时候统一处理

  • 缩进:四空格,无 Tab

  • 折行:

    • 头文件中的函数签名可以不折行,其他地方的代码一律小于 80 char per line

    • 参数过长时,从超过长度的第一个参数开始折行,参数无需对齐

    • 太长的字符串可以不折行

    • gtk_widget_class_bind_template_child() 由于实在太长,可以不折行

    • 花括号不换行(除非在 case 中),右圆括号和左花括号之间没有空格(待定)

  • 命名:

    • 鼓励局部变量和函数参数使用缩写,全局变量及函数名,类型名不鼓励缩写

    • 宏大写,数据类型,类名用大驼峰法,变量使用全小写 + 下划线

    • 文件名全小写,以下划线分隔

  • 注释:

    • 按英文规范,句首第一个单词首字符大写,多句时使用标点符号,同样每行不得超过 80 字符(汉字以两字符计),链接可以不折行

  • Git commit log: 格式为 MODULE(TYPE): DESCRIPTION ,当前可用的模块(MODULE) 有: All Core Sirc Sui Prefs Filter Decorator Lib I18n Data Plugin Build Script Doc... ,可用的提交类型(TYPE) 有: feat impl change fix improve cleanup refactor update release misc...

  • I18N:所有需要在界面上展示的格式化字符串中的控制字符均使用 numbered argument, 即 %n$X 形式

  • Change log: 应分为四类

    • Changed: 设计或功能上的改动,可能会带来兼容问题的一定要说明

    • Added: 新增的功能或者依赖

    • Removed: 移除的功能或者依赖

    • Imporved: 性能或功能或易用性上的改善以及 bug 修复

  • 发布前须知

    • 集成测试 (TODO)

    • 更新翻译

    • 更新文档

    • 更新 change log

    • 更新项目中的版本号

    • 确认文档中的提供的安装脚本可用

    • 对最新的 commit 打 tag

    • 通知各个发行版的打包维护者

      • Arch Linux: @SilverRainZ

      • Gentoo: @xeirrr