C/C++
至简李云
近十年通讯行业从业经验,曾任 Motorola 系统架构师;近十年就职于阿里巴巴集团,曾负责 UC 浏览器电脑版技术团队和阿里巴巴集团内部的服务网格(Service Mesh)技术的落地工作,现在阿里云负责服务网格专有云技术工作;具有硬件开发经验的软件技术专家;著有在嵌入式领域具有很好口碑的图书——《专业嵌入式软件开发》;《技术团队效能动力模型》的提出者;浙江大学MBA,具有管理思维的软件工程师;陪伴两个孩子一起成长的工程师父亲。
展开
-
揭示C++中全局类变量的构造与析构顺序
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7081148。在完成《专业嵌入式软件开发 — 全面走向高质高效编程》一书后,我将下一本书的创作集点放在了基于C++的面象对象设计与开发上。从现在开始我将陆续推出关于C++和面高对原创 2011-12-18 09:19:31 · 3258 阅读 · 0 评论 -
【编程好习惯】 引入中间变量使程序更易读
今天查看自己为《专业嵌入式软件开发》一书所写的代码时发现,个别函数由于没有引入中间变量,使代码行既长又不易读。重构前后的代码如下所示。 重构前:if (TIMER_STARTED == _handle->state_) { timer_handle_t next; if (g_timer_next == _handle) { g_timer_n原创 2012-05-10 14:29:55 · 5446 阅读 · 0 评论 -
【编程好习惯】减少搜索头文件的目录数
假设存在下图所示的项目目录结构。如果存在如下包含头文件的代码,则大多的项目中需要通过“-I foo”和“-I bar”指明两个搜索头文件的目录。12foo.c#include "bar.h"12bar.c#include "foo.h"然而,当项目规模很大存在很多的目录时,这种方式将显著地降低项目的编译速度。因为“-I”选项使用得越多,意味着编译每一个C文件时所需进行头文件搜索的目录也越多。为了避原创 2013-07-16 11:20:02 · 3695 阅读 · 1 评论 -
编程思维训练(一)
最近以提问的形式发了几条关于编程思维的微博,有的获得了粉丝的响应,有些却无人问津。今天突然想到可以将我对这些问题的思考整理成一篇博文,以便与大家分享。另外,我计划以“编程思维训练”为名写一些系列文章,希望通过这类文章与读者分享我在编程活动中的一些思考。问:有一对内存管理函数MemAlloc和MemFree,使用形式分别是:分配时为“void *p = MemAlloc (6)",释放时为“原创 2012-10-18 20:49:23 · 10582 阅读 · 1 评论 -
一种面向业务流的内存管理算法
在象通讯系统中的基站这样的复杂嵌入式系统中,对于内存管理模块的效率具有很高的要求,因此内存管理模块的算法很有讲究。讲究在于,不仅要考虑算法的效率,还要兼顾算法是否会带来大量的内存碎片以及如何进行内存碎片合并。正因如此,这类嵌入式系统软件大多会对内存管理模块根据业务特点进行适当的优化。优化的方式无外乎引入内存池,或对堆管理模块引入新的算法加以优化,然而这些方法除了引入了一定的算法复杂度外原创 2012-07-31 22:39:19 · 5508 阅读 · 0 评论 -
在C++中通过模板规避潜在错误
注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整,阅读时请注意。 模板(template)为C++带来了泛型编程的能力,但也带来了使用难度。大体上,使用模板的三大动机分别是提高复用性、去除强制转换和规避潜在错误。在此让我们看一看规避错误的一个例子。假设我们有图 1所示的被简化了的定时器管理模块程序。从构造函数来看,它的三个参数分别指明了定原创 2012-05-16 13:25:31 · 4998 阅读 · 2 评论 -
在C++中通过模板去除强制转换
推荐阅读:《在C++中通过模板规避潜在错误》 C++与C语言相比是一个强类型语言,即对数据类型的匹配程度较C更为严格,这有助于避免程序员在编程过程中由于粗心所犯之错。由于历史原因,C++中仍保留了reinterpret_ cast、static_cast等用于强制类型转换的关键字,但从语言向强类型发展的趋势来看,我们在编程工作中应尽量少使用强制类型转换,模板有助于我们实现这一目的。减少使用原创 2012-06-09 15:45:31 · 4993 阅读 · 0 评论 -
C程序员要学C++吗?
最近网友问到这一问题,但我更希望被问的是“C程序员需要学面向对象编程吗?”,那就让我先从回答这一问题开始,并做适当的扩展。就我的成长经历来看,C程序员必须学习面向对象编程!面向对象编程语言有其天然的一个优势 — 将软件世界的一切象现实世界那样视为对象。我在《专业嵌入式软件开发》一书的《设计,质量之本》一章中指出,软件设计的一个原则是“以人为本”,在软件世界中构建现实世界就能很好地贯彻这原创 2012-01-12 16:33:09 · 3485 阅读 · 1 评论 -
C++中实现Singleton的正确方法
原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处 、作者信息和本声明,否则将追究法律责任。http://blog.csdn.net/hzliyun/article/details/7178930。如果某个类管理了系统中唯一的某种资源,那么我们只能创建该类的一个实例,此时用到singleton设计模式(后面为了简化将省略“设计模式”四个字)就比较合适了。然而,如果原创 2012-01-05 17:14:06 · 4196 阅读 · 0 评论 -
缓解可查错性问题的手段——单元测试
从本月初开始,我加入了某基站开发团队。尽管我在通讯行业工作快10年了,但这是头一次工作于机站项目,所需学习的东西自然很多,还是那句话 — 有挑战才会有进步。在此我想与读者分享过去三周我就软件的可查错性的一点新体会。现从事的项目是真正的嵌入式系统,机站上的MAC和PHY程序是运行在DSP之上的。加入团队伊始,同事告诉我,团队在碰到Crash这样的问题时,显得很是被动。经过我俩几番的交谈,原创 2012-08-05 21:16:42 · 5255 阅读 · 2 评论