Skip to content

Latest commit

 

History

History
75 lines (50 loc) · 1.64 KB

01_编码规范.md

File metadata and controls

75 lines (50 loc) · 1.64 KB

命名

命名原则:

  • 简单清晰,没有歧义
  • 功能类似的结构命名类似,优先最左匹配原则
  • 从风格上便于识别出变量的类型

常量

命名风格:全大写+下划线

示例如下

const char* APP_VERSION = "0.1.0" // 应用版本的常量 

全局变量

不建议使用:全局变量容易引起名称冲突等多种问题

解决方案:

  • 方案1: 使用临时变量或者匿名变量(static)
  • 方案2: 全局变量放在vm对象属性上

命名风格:全大写+下划线

示例如下

int GLOBAL_COUNT = 0; 

临时变量

命名风格:小写字符+下划线

示例如下

int i = 0;     // 临时的索引
char buf[20];  // 临时缓冲区

函数

命名风格:

  • 函数命名分为3个部分:[前缀_] 功能描述 [_返回类型]
  • 在模拟面向对象的场景中,[前缀_]可以是第一个参数的类型(或者缩写)
  • 函数名建议使用动宾结构, 比如mp_get_attr, mp_get_attr_by_obj

示例如下

// 1) 模块下面的函数, [模块名_函数名]
void* mp_malloc(size_t size); // minipy的申请内存函数 

// 2) 面向对象函数, [类型名_方法名]
MpObj MpType_Add(MpObj obj, MpObj key);      // 获取对象的属性
char* MpType_AddByKey(MpObj obj, MpObj key); // 获取对象属性并且转为C字符串

// 3) 内部函数,后缀0或者前缀`_` 必须声明为`static`
static void foo0(int arg1);
static void _foo();

缩写前缀

  • sz char数组指针
  • cstr char*类型
  • obj_XXX 输入参数是Object类型
  • list_XXX 输入参数是MpList*类型
  • bf_XXX 内置函数(builtin function)