命名原则:
- 简单清晰,没有歧义
- 功能类似的结构命名类似,优先最左匹配原则
- 从风格上便于识别出变量的类型
命名风格:全大写+下划线
示例如下
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)