嵌入式高效编程(一)——简洁

来源:互联网 发布:龙门镖局不好看知乎 编辑:程序博客网 时间:2024/05/17 22:00

两年的工作经验心得总结一下:怎么做到嵌入式高效编程。

1、高效编程的概念

  • 程序的性能高≠高效编程
  • 精确实现预定功能
  • 调试时间在整个开发周期内占比低
  • 代码简洁
  • 代码便于维护的代码
  •  高效编程就是快速写出高质量的代码

2、高效编程的要点

  • 简洁
  • 清晰
  • 灵活
  • 安全
  • 单元测试
  • 设计

3、高效编程要点:简洁

简洁可以简单理解为无重复的量和代码,无无效代码或逻辑。

3、1 用宏代替常数

double circle_area(double r){return 3.14 * r * r;}#define PI3.1415926#define float_tdoublefloat_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 重复代码的问题

  • 程序体积变大
  • 维护成本增加
  • 容易漏改问题
  • 迷惑人,对排查问题带来干扰
  • 容易引发不一致性,造成程序运行意外
代码简洁暂且写到这里,以后工作中遇到典型问题继续更新。











6 0
原创粉丝点击