写C++程序要清楚自己的角色(孟岩)

转载 2006年05月25日 15:46:00
今 天跟一些朋友在信件里讨论C++的使用。一个还在学习C++的朋友,认为要把重点放在虚函数、多态性、STL上。我认为学习的时候这样考虑肯定是对的,但 是真正开发的时候,不能因为你掌握了OO、generic这些先进武器,就非要用上这些东西,以示区别不可。谨慎合理地使用语言的机制是开发良好C++程 序的关键,至少在心态上是关键。

下面是信件内容的摘选:

你 写C++的时候,一定要想清楚,你是在做基础设施还是在应用。如果是基础设施,比如类库、框架、底层功能的class wrapper,那么可以允许你大胆地使用C++中的各种技巧,关键的要求是你得暴露出来一个clean的interface,让别人好用。这一点并不容 易,特别是有的时候你觉得很好用的接口人家就觉得很别扭。所以比较省心的做法就是把接口设计成流行的风格。比如模仿STL的风格,模仿Java的风格,模 仿COM的风格,甚至模仿MFC的风格,可能都比你自己发明一种新风格要“好用”。

可是做应用开发的时候,手就要把紧点,别自鸣得意地滥 用高级技巧。应用开发很大程度上受基础设施的制约,总的来说,使用函数、POD对象、concrete class,从framework中派生出来的class,再加上一点点用来节省打字的template,足以满足应用开发的需要。特别是当你的下面没有 很完备的class library或者framework的时候,千万不要一边写应用,一边又想着怎么让自己的这些东西“为万世开太平”,那样的话很容易就会把程序结构作的 过于复杂。最后往往是应用没写好,也没有可复用性。以前我没有经验的时候,最容易犯的错误就是这个。

做基础设施的开发,那叫“设计”,是 要为以后考虑的,为了长远利益可以牺牲眼前的进度、简单性。可是做应用,那眼前利益是第一位的,你先把手头的东西又快又稳地run起来,才谈得上以后有复 用的可能。眼前的东西作的一塌糊涂,说里面有的模块设计得超级棒,绝对能复用,你自己都不相信。代码要一丝不苟,该写注释写注释,该写assert写 assert,该怎么样怎么样,不能因为想着“反正也就是一锤子买卖”就马马虎虎。至于能不能复用,那是以后的事情。所谓Design for today, code for tomorrow,就是这个意思。


Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=754239

用C设计,用C++编码

      昨天晚上看到刘江的blog又补充了好几大段,今天早上又看到云风的人肉trackback,果然还是这种话题引人关注。      云风先是提了一下所谓C++带来的思想包袱(文言文曰“心智包袱...
  • myan
  • myan
  • 2007年09月10日 11:32
  • 45401

读孟岩先生的《程序员必须走向专业化》有感

        今天拜读了孟岩先生的《程序员必须走向专业化》,很有感触,既有赞同也有非议。        首先,我们需要界定一下何谓“专业化”?是指编程技术上的专业还是指业务领域方面的专业?至少在这篇...
  • jintianyishiyeai
  • jintianyishiyeai
  • 2008年03月01日 00:20
  • 882

程序员必须走向专业化

上周六(2月23日),IEEE-CS力推的CSDP认证培训第三期班在中关村创新研修学院开班。这次的开班仪式很有特色,主办方特别举办了一个软件工程研讨会。我赶到会场的时候正赶上中软通用产品研发中心总经理...
  • myan
  • myan
  • 2008年02月28日 11:06
  • 33431

孟岩:感恩侯捷,遇高人不可交臂而失之

一个“技术文化人”的片段感悟作者: chenqiuge分类:架构实践 阅读:12,058 次添加评论2003年我加入CSDN,6年之后离开。在2003年之后,我的技术身份就很难界定了。曾经有个朋友称我...
  • beyondhenry
  • beyondhenry
  • 2011年04月17日 19:18
  • 3583

写C++程序要清楚自己的角色

今天跟一些朋友在信件里讨论C++的使用。一个还在学习C++的朋友,认为要把重点放在虚函数、多态性、STL上。我认为学习的时候这样考虑肯定是对的,但是真正开发的时候,不能因为你掌握了OO、generic...
  • myan
  • myan
  • 2006年05月25日 11:06
  • 15119

笔记——csdn孟岩博客之矩阵理解

矩阵描述了一种变换,另一角度矩阵也描述了一个坐标系;(这里只讨论n阶、非奇异的方阵)。如下: Ma = b ; 请允许我叫他妈逼公式;以此来说明矩阵的两面性。 ①从变换角度:上式可以看作向量a经过矩阵...
  • rudy_axle
  • rudy_axle
  • 2015年01月17日 15:54
  • 672

MapReduce/GFS/BigTable三大技术资料

MapReduce/GFS/BigTable三大技术资料 首先是在孟岩博客中发现以下内容: Google的三大核心技术MapReduce、GFS和BigTable的论文都已经被翻译成高质量...
  • fishmai
  • fishmai
  • 2016年06月06日 11:08
  • 431

Google MapReduce/GFS/BigTable三大技术的中文版

今天查找分布式计算的有关资料,发现Google的三大核心技术MapReduce、GFS和BigTable的论文都已经被翻译成高质量的中文,更巧的是,这三篇中译版的原发地都是CSDN的Blog。其中最新...
  • woaiwojia6399
  • woaiwojia6399
  • 2015年07月20日 14:44
  • 235

TCP/IP编程之四书五经——孟岩

TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(...
  • likelikebing
  • likelikebing
  • 2014年08月13日 16:48
  • 621

csdn大师孟岩老师为本书作序——“未来属于动态语言”

   如果你想掌握Ruby,这本书是最好的起点。如果你想运用Ruby,这本书也是案头必备。所以,如果你已经决定要走入Ruby的世界,那么这本书是必经之路,而本不需要一篇“推荐序”。问题在于,我们为什么...
  • programming_Ruby
  • programming_Ruby
  • 2007年03月21日 16:06
  • 1210
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: 写C++程序要清楚自己的角色(孟岩)
举报原因:
原因补充:

(最多只允许输入30个字)