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

转载 2006年05月25日 20:59: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,就是这个意思。

ftp安装配置运行(转写)

最开始,我在网上下载了vsftpd的源码进行编译,make的时候发现除了一大堆的问题。网上看看,发现是几个包没有安装,这是因为依赖包(libpam0g-dev libcap-dev libwrap0-...
  • cogbee
  • cogbee
  • 2013年06月16日 20:49
  • 3205

javascript js内存泄漏四种-转写

javascript js内存泄漏四种

如何在C++中调用C程序?(讲的比较清楚)

转自:如何在C++中调用C程序? C++和C是两种完全不同的编译链接处理方式,如果直接在C++里面调用C函数,会找不到函数体,报链接错误。要解决这个问题,就要在 C++文件里面显示声明一下哪些函数是C...

Visual C++角色扮演游戏程序

  • 2007年05月04日 12:54
  • 7.62MB
  • 下载

python调用讯飞付费版语音转写

python调用讯飞付费版语音转写讯飞开发平台提供了付费版的语音转写(Long Form Automatic Speech Recognition,通过SDK调用云端转写服务,将长段音频(5小时以内)...

Visual C++角色扮演游戏程序设计

  • 2008年01月18日 08:30
  • 9.13MB
  • 下载

visual c++角色扮演游戏程序设计.rar

  • 2008年07月16日 13:23
  • 9.12MB
  • 下载

深度全序列卷积神经网络成功用于语音转写技术

导读:目前最好的语音识别系统采用双向长短时记忆网络(LSTM,LongShort Term Memory),但是,这一系统存在训练复杂度高、解码时延高的问题,尤其在工业界的实时识别系统中很难应用。科...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:转写C++程序要清楚自己的角色
举报原因:
原因补充:

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