一、课程背景:
由于高等教育模式的使然,使得国内不少拥有一定工作年限的工程师所认知的C语言 和工程上的实用C依然有一定的差距。无论软件架构设计的不得当,还是代码书写的不严谨、不规范,最终都会导致产品暴露出各种bug,客户埋怨,工程师痛苦,代码的维护成本提高,公司蒙受经济损失。
主要针对:在职的有一定工程经验的研发工程师
二、课程目的:
本课程主讲老师将会把自己多次参与国际大型合作项目的视角和经验分享给各位,让大家重新认识到,真正的编程思想是什么?怎样编写卓越的代码?同时,也会给大家展示业界各种软件项目管理工具的使用习惯,使大家能从更宏观、更广泛的高度来看待编码这个工作,帮助大家开阔眼界和思路。
三、本课程涉及主要内容:
内容涉及C语言深入理解、代码可读性、写高性能代码、设计好的软件架构、C面向对象、防御性编程、代码评审和重构等。
1、包括C高级特性、代码风格、代码审核、代码维护、代码重构,
2、会深度分析C软件模块划分的原则以及如何将面向对象的思想完美得用在工程项目之中。
3、会介绍RTOS或复杂操作系统环境下多任务划分的技巧。指导嵌入式系统的开发者开发出具有高可读性、可扩展性和可维护性的代码。
四、课程特点:
本课程既有业界先进做法的分享与高质量源码的范例,也有大家常犯错误的举例,从内容安排上可看到5个层次,由浅入深逐级递进。
1、宏观概述:分层解释嵌入式系统组件,在个性中找共性。
2、见微知著:嵌入式C基础高级主题,介绍嵌C易被忽略的重要概念,编译器和cache的一些特点。
3、标杆对照:从嵌入式C语言编码风格入手,传播给大家正确的编码价值观方法论,包括良好的编程习惯,版本管理,软件项目管理等。
4、架构优化:用若干实例讲解如何实现模块划分的低耦合,以及如何用嵌入式C的面向对象来改善软件架构。
5、质量提升:如何通过防御编程,代码评审,代码重构来一遍遍优化代码。
五、主讲老师:
宋宝华。
六、主要内容:
热身
嵌入式体系架构与C
C编译流程
C编译器的编译优化
如何评判代码质量
C语言的不同种类
课程内容一、嵌入式C关键特性
第一章 C深入理解
变量与内存分配机制
指针和函数指针
关键字restrict
关键字static和extern
关键字volatile
关键字const
零长度数组
位操作的应用
结构体中的位域
字节序与位序
内存的分配和控制
C的内存陷阱与表象
DMA与cache一致性问题
强弱符号
第二章 嵌入式C编码风格
变量、函数、宏、文件等的命名
代码排版与布局
怎样编写高质量注释
代码与文档
代码的提交(commit)与提交时候的审核
第三章 嵌入式C性能优化
找出耗时的代码
使用宏和inline
使用寄存器变量
内嵌汇编
利用硬件特性(cache,pipeline)
循环展开
使用查找表
编译优化
乱序执行与内存屏障
课程内容二、嵌入式C软件结构
第四章 嵌入式C软件模块与模块划分
模块划分原则(高质量,低耦合)
源代码文件和目录的组织
硬件驱动模块
软件功能模块
提供API
头文件
全局变量
主循环与中断
主循环与中断的互斥与通信
锁的正确使用、临界区
操作系统下多任务划分原则
软件的目录组织
驱动的跨CPU实现
业务逻辑的跨平台实现
第五章 嵌入式C的面向对象
用struct来模拟class
封装
继承
多态
软件分层与中间层的设计
利用面向对象思想优化软件架构
课程内容三、嵌入式C编码
第六章 嵌入式C函数
一个函数只做一件事,不要编写多种功能集于一身的函数
明确地定义函数的参数
避免比尔类型参数
编写函数使其在给定有效的输入情况下不会失败
函数不依赖于另一个函数的内部细节
函数要小且容易测试
函数内部代码块
线程安全与函数的可重入
第七章 嵌入式C防御性编程
防御性代码的风格
编译警告开关的使用
预计所有可能的异常
检查所有的返回值
审慎处理内存资源
变量声明策略
审慎地进行强制转换
避免运算越界
使用lint来查出编译程序漏掉的错误
使用断言
第八章 嵌入式C代码重构
代码重构的原则
重新命名函数
提炼函数
提炼判断条件
简化函数参数
解除全局变量的噩梦
避免函数传递中的隐形bug
调整函数位置
第九章 嵌入式C代码评审
代码评审的规范
代码评审的组织方式
代码评审的内容
结合配置管理强制代码评审
七、主办单位:
中国高科技产业化研究会智能信息处理产业化分会
北京中际赛威文化发展有限公司
北京中际孚歌科技有限公司
北京中际荣威科技有限公司
八、时间/地点:
深圳:2018年01月26-27日
九、课程收费:
主要针对单位有报销的同事,个人用户请咨询打折。
十、联系人:
扫码加客服微信
领取专属 10元无门槛券
私享最新 技术干货