Files
TencentOS-tiny/components/connectivity/iot-hub-device-c-sdk/docs/SDK代码格式说明.md

3.0 KiB
Raw Blame History

一、编写目的

该文档用作提供 SDK 开发的代码格式说明,开发者提交代码前应仔细阅读。

本项目根目录提供了.clang-format格式文件,请优先使用clang-format进行代码格式统一。

如有冲突,请以clang-format的结果为准。

二、代码格式

行长度

最长120行

缩进

四个空格

文件编码

UTF-8 不能有BOM头。

分行

1.对齐式

bool retval = DoSomething(averyveryveryverylongargument1,
                             argument2, argument3);

2.缩进式

if (...) {
    ...
    ...
    if (...) {
        DoSomething(
           argument1, argument2,  // 4 空格缩进
           argument3, argument4);
    }

条件语句

if (condition) {
    DoSomething();  // 4 空格缩进.
}

循环和开关语句

  • default不可达时用assert
  • case使用大括号非强制要求
switch (var) {
    case 0: {  // 4 空格缩进
      ...      // 4 空格缩进
      break;
    }
    case 1: {
      ...
      break;
    }
    default: {
      assert(false);
    }
}

指针

char* ptr = NULL;

水平留白

行尾不留白

void f(bool b) {  // 左大括号前总是有空格
  ...
int i = 0;  // 分号前不加空格

// 列表初始化中大括号内的空格是可选的,
// 如果加了空格,那么两边都要加上
int x[] = { 0 };
int x[] = {0};

if (b) {          // if 条件语句和循环语句关键字后均有空格
} else {          // else 前后有空格
}

while (test) {}   // 圆括号内部不紧邻空格
switch (i) {
for (int i = 0; i < 5; ++i) {

// 循环和条件语句的圆括号内可以有空格,
// 但这种情况很少,要保持一致
switch ( i ) {
if ( test ) {
for ( int i = 0; i < 5; ++i ) {

// 循环里内分号后恒有空格,分号前可以加个空格
for ( ; i < 5 ; ++i) {
switch (i) {
    case 1:         // switch case 的冒号前无空格
        ...
    case 2: break;  // 如果冒号后有代码,加个空格
  
// 赋值运算符前后总是有空格
x = 0;

// 其它二元操作符前后也恒有空格,对于表达式的子式可以不加空格
// 圆括号内部没有紧邻空格
v = w * x + y / z;
v = w*x + y/z;
v = w * (x + z);

// 在参数和一元操作符之间不加空格
x = -5;
++x;
if (x && !y)
  ...

垂直留白

看情况,根据个人习惯,增强可读性即可