李云 的著作


互动 京东 当当 亚马逊 豆瓣

正创作《C++跨平台与框架开发》

博客统计信息

51cto专家博客 51cto博客之星
用户名:李云
文章数:152
评论数:808
访问量:491862
无忧币:3179
博客积分:6254
博客等级:8
注册日期:2009-06-20

该书已全面上市(在我博客首页左侧的图书封面下方能找到购买链接),您可以通过本博文以留言的方式写下您的建议和发现的错误。我会不断对之整理以作本文内容的一部分。谢谢!
 
感谢您在购书网站或豆瓣写下书评以帮助他人选书。如觉得该书不错,请帮忙推荐给周围的人。
 
另:本书入选CSDN 2011年度十大最具技术影响力图书(本版)。 感谢读者的喜爱与认可。
样章
《前言》
《目录》
第10章《ABI/EABI规范,缔造程序兼容合约》
第13章《设计,软件质量之本》

勘误
1) 第9页图1.5中main()函数内的&ld..
注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整,阅读时请注意。
 
模板(template)为C++带来了泛型编程的能力,但也带来了使用难度。大体上,使用模板的三大动机分别是提高复用性、去除强制转换和规避潜在错误。在此让我们看一看规避错误的一个例子。


假设我们有图 1所示的被简化了的定时器管理模块程序。从构造函数来看,它的三个参数分别指明了定时器的延时时间、回调函数和回调函数的参数,其中的回调函数是通过timer_callback_t类加以封装的。当定时器到期时,它的fire..
类别:C/C++|阅读(90)|回复(0)|(1)阅读全文>>
我在Motorola工作了近6年(注:在这期间我经历了Motorola拆分成Motorola Solutions和Motorola Mobility,以及Motorola Solutions将网络部门卖给NSN,期间我所在团队的企业文化和工作环境一直沿用的是原Motorola的),经历了从开发工程师到架构师的成长历程,在此分享一下软件工程师在Motorola这样的外企应学些什么。



首先,由于外企的工作语言是外语,因此掌握外语是必须的。在Motorola这样的外企工作,英语不光要求会看和写,而且要听和说都行。外语对于一线工程师来说要求相对弱一点,因为除了出国和平时与外国同事开会外运用..
注:本文节选自我正在创作的第二本书《C++跨平台与框架开发》,其中一些措词并未就博文进行调整。读者阅读时请注意这一点。
 
Brooks在他的《人月神话》中指出软件行业没有“银弹”,如果将平台与框架开发当作是软件行业的“银弹”可就大错特错了,充其量它只是“龙骑士 ”。软件行业没有“银弹”的原因是,软件开发工作与人——个体和由个体组成的团队,息息相关。


再好的方法论都需要由个体去实施,而个体不可能是全能,因此我们需要团队。实施平台与框架开发的根本..
今天查看自己为《专业嵌入式软件开发》一书所写的代码时发现,个别函数由于没有引入中间变量,使代码行既长又不易读。重构前后的代码如下所示。
 
重构前:
if (TIMER_STARTED == _handle->state_) {     timer_handle_t next;          if (g_timer_next == _handle) {         g_timer_next = (timer_handle_t) dll_next (..
类别:C/C++|阅读(192)|回复(0)|(0)阅读全文>>
2012-05-04 17:14:08
一旦明白了软件设计的真谛(参见《软件设计的真谛》),我们就更能理解面向对象设计的优点。简单说来,它更便于我们在软件中构建更真实的虚拟世界。
 
首先,对象的引入方便了在软件虚拟世界中模拟现实世界。现实世界是由很多独立的抽象或具体物体组成的,比如房子、汽车、空调、书等等。为了构建更真实的虚拟世界,在软件中需要存在用于表达类似现实物体的编程元素,这正是引入对象概念的意义所在。
 
以对象为设计中心,迫使设计者在关注程序所需实现功能的同时不至于忘记通过抽象去塑造概念,以便用对象表达之。由于..
2012-04-29 17:23:44
假设我们身边的一切都是用制造材料加以描述的:“空调”不是“空调”,而是“由金属和塑料做成的物体”;“书”不是“书”,而是“由纤维和墨做成的物体”。沟通时我们也不用“空调”和“书”这样的词汇,而是“金属和塑料做成的物体”和“纤维和墨做成的物体”。可以想象大脑在面对这些信息时会让我们觉得多么的痛苦,显然这样的事情在现实中很少发生,因为我们的大脑具备很强的抽象能力 ,会通过抽象塑造“空调”和..
2012-04-13 08:14:54
最近,身边的一位朋友因为需要在其单位与同事分享单元测试(Unit Test,UT)方面的知识,邀我对他所准备的PPT进行审阅。在审阅的过程中我发现,他在PPT中指出:“实际工作中,写好程序后对程序功能的调试就是一种单元测试”。由于我知道这位朋友并没有运用单元测试的经验,所以我问到:“你的这一认识是从哪里获得的?”,朋友答曰:“从网上搜来的”。无独有偶,这两天我在微博上看到了对单元测试相似的理解:“写好程序,编译完,跑一跑,看看写得对不对,这就是最简单的UT啊!”



对..
2012-01-12 16:31:26
最近网友问到这一问题,但我更希望被问的是“C程序员需要学面向对象编程吗?”,那就让我先从回答这一问题开始,并做适当的扩展。
 
就我的成长经历来看,C程序员必须学习面向对象编程!面向对象编程语言有其天然的一个优势 — 将软件世界的一切象现实世界那样视为对象。我在《专业嵌入式软件开发》一书的《设计,质量之本》一章中指出,软件设计的一个原则是“以人为本”,在软件世界中构建现实世界就能很好地贯彻这一原则,而对象在编程语言中的引入提供了设计便利性。对象的引入使得编程语言具有更..
类别:C/C++|阅读(661)|回复(0)|(1)阅读全文>>
下图是根据我的经验所得到的软件开发工程师技术能力层次模型。在这个模型中,你属于哪一个层次?你的心中也有类似的模型吗?

 推荐阅读《高质高效软件开发组织能力模型》、《出色技术团队的关键要素》。
 <<   1   2   3   4   5   >>   页数 ( 1/16 )

订阅我的博客


google reader 鲜果 QQ邮箱 有道 抓虾