编码风格

语法

  • UTF-8编码
  • Unix换行符,每行120字符
  • 缩进符用4个空格,需要设定编辑器tab4空格
  • 花括号独占一行
  • 函数与函数间使用一个空行分割
  • 能使用静态内联(static sw_inline)就不要用宏
  • 能用enum枚举就不要用宏
  • 代码可读性比性能更重要

标签

  • label必须以下划线开头,用于goto语句
  • label必须独占一行

枚举

命名必须为sw{模块名称}_{作用},如:swServer_event_type

  • swServer :表示枚举属于Server模块
  • _event_type:表示属于事件类型,一般_type表示这是一个类型,只存在一种状态。而flag表示这是一个标志位,可以同时表达多种状态

C++

  • Class类名必须为首字母大写,如SocketCoroutineSystem
  • NameSpace命名空间必须为小写,如swoole::coroutinezend
  • Method方法名和Property属性,必须为小写,单词之间使用下划线(_)分割,如set_timeout()
  • 只使用C++提供的面向对象、STL容器,不得使用智能指针等复杂的C++特性,避免降低可读性

示例

int test()
{
    for (i=0; i < 10; i++)
    {
        if (i == 3)
        {
            goto _return;
        }
    }
    _return:
    return 0;
}

变量命名

一些约定俗成的变量命名规范

  • 需要保存的返回值一般为int retssize_t ret
  • 所有zval指针命名应以z打头, 如zval *zobject, 便于区分

类型使用

  • 调用其他C函数时,参数类型与其函数声明保持一致
  • 统一使用uint16_tuint32_tuint64_tint32_t等类型
  • 不使用unsignedlongshort等类型

IDE 格式化