首页 > 代码库 > 嵌入式高效编程(一)——简洁
嵌入式高效编程(一)——简洁
两年的工作经验心得总结一下:怎么做到嵌入式高效编程。
1、高效编程的概念
- 程序的性能高≠高效编程
- 精确实现预定功能
- 调试时间在整个开发周期内占比低
- 代码简洁
- 代码便于维护的代码
- 高效编程就是快速写出高质量的代码
2、高效编程的要点
- 简洁
- 清晰
- 灵活
- 安全
- 单元测试
- 设计
3、高效编程要点:简洁
简洁可以简单理解为无重复的量和代码,无无效代码或逻辑。
3、1 用宏代替常数
double circle_area(double r) { return 3.14 * r * r; } #define PI 3.1415926 #define float_t double float_t circle_area(float_t r) { return PI * r * r; }
3、2 用宏表示重复的计算公式或操作
#define point_reset(p) ((p % 4) < 2) ? (p / 4 * 4) : (p / 4 * 4 + 4) xxx = point_reset(xxx) yyy = point_reset(yyy)
3、3 用同一个量来表达一致的量
pAudioBuf = malloc(一个稍复杂的计算表达式exp); … memcpy(pAudioBuf, src, 一个稍复杂的计算表达式exp); iAudioSize = 一个稍复杂的计算表达式exp; pAudioBuf = malloc(iAudioSize); … memcpy(pAudioBuf, src, iAudioSize);
Funxxx() { for (i = 0; i < 16; i++) {… } for (i = 0; I < 16; i++) { } } Funxxx() { iCnt = 16; for (i = 0; i < iCnt; i++) { } for (i = 0; I < iCnt; i++) { } }
3、4 通用的代码逻辑独立成函数
3、5 函数只定义一份
3、6 无效的逻辑判断
例一 { … if (res) { return rs; } else { return 0; } } //修改 { … return res; }
例二 { … if (res) { return xxxx; } else { return 0; } } 修改 { … return res ? xxx : 0; }
3、7 数组的应用
例: { … if (0 == res) { return xxx1; } else if (1 = res) { return xxx2; } else if (2 = res) { return xxx3 } …. } 修改: { vals[] = {xxx1, xxx2, xxx3, …}; … return vals[res]; }
3、8 模板应用
double double_add(double a, double b) { return a + b; } float float_add(float a, float b) { return a + b; } int int_add(int a, int b) { return a + b; } #define DECLARE_MATH_FUN(name, type, op) type type##_##name(type a, type b) { return (type)(a op b);} DECLARE_MATH_FUN(add, int, +); DECLARE_MATH_FUN(add, float, +); DECLARE_MATH_FUN(add, double, +); DECLARE_MATH_FUN(sub, int, -); DECLARE_MATH_FUN(sub, float, -); DECLARE_MATH_FUN(sub, double, -);
3、9 简洁代码的恶敌
- 复制&粘贴
- 懒惰的程序员
- 不思考的程序员
- 没长进的程序员
- 以代码量的多寡论成就感的程序员
3、10 重复代码的问题
- 程序体积变大
- 维护成本增加
- 容易漏改问题
- 迷惑人,对排查问题带来干扰
- 容易引发不一致性,造成程序运行意外
代码简洁暂且写到这里,以后工作中遇到典型问题继续更新。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。