嵌入式高效编程(一)——简洁
来源:互联网 发布:龙门镖局不好看知乎 编辑:程序博客网 时间: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
- 嵌入式高效编程(一)——简洁
- 嵌入式高效编程(二)——清晰
- Java编程思想(01)——重构让代码更简洁(一)
- 嵌入式系统高效编程
- eclipse高效编程(一)
- 嵌入式linux 项目开发(一)——CGIC编程
- 嵌入式 Linux系统编程(一)——文件IO
- 嵌入式linux 项目开发(一)——CGIC编程
- 嵌入式linux 项目开发(一)——HTML编程
- 嵌入式高效编程小技巧
- 嵌入式 Linux网络编程(一)——Socket网络编程基础
- C#高效编程话题集(一)
- 高效编程(一)IDE配置
- 高效编程体会一
- Windows 消息机制(简洁高效)
- C在嵌入式中高效编程
- 嵌入式linux面试题解析(三)——Linux应用编程部分一
- 嵌入式linux面试题解析(三)——Linux应用编程部分一
- leedcode做题总结,题目Symmetric Tree 2012/09/23
- poj1019
- 实参演绎的过程中编译失败的意外情况
- Android 百度地图 SDK v3.0.0 (二) 定位与结合方向传感器
- 广搜深搜二
- 嵌入式高效编程(一)——简洁
- 福建省队集训被虐记——DAY1
- 1022. D进制的A+B (20)
- java流机制总结笔记2——字符流
- 解决某些服务器只允许微信自带浏览器
- 广搜二
- springmvc详解
- 2014.07.12
- poj_1330 Nearest Common Ancestors