乱谈C++

来源:互联网 发布:java二叉树查找key算法 编辑:程序博客网 时间:2024/05/22 17:14

 总结,写成文档,再拿来分享和讨论,是我在做华为外包最大的收获之一。

      有一天,和朋友乱谈品酒师:品酒师如何不会因为个人的品味而影响自己对酒质做出客观,公正的评值。与品酒师相反,程序员大都数时候就像教徒一样虔诚和狂热。他们固守着自己或者某人的观点,拒绝接受新的语言或者方法,过度自信或者过度不自信,过份追求技术本身而忘记了技术的目的。等等如此。现实中,有人害怕微软的串口通讯组件有太多的BUG,也有人相信如果自己来重写C++标准库,会更简单高效,也有人为了一个循环语句大作文章而忽略了整个程序的架构设计。

      一个重口味的程序员,永远不会成为一个品代码的大师。

       于是,把自己的一些想法拿出来晒一晒,只求进步吧。

        1.对程序影响最大的,在于架构设计和关键算法的实现。 20%的代码,花费了80%的资源,不要进行不成熟的优化,思考再三之后,再优化。测试,严格的测试,找出程序的性能所在,再优化。否则,你的优化可能只是无用功,甚至会引入了新的性能问题和BUG!最便宜,最简单,最可靠的程序只存在于天堂。

        2.结合项目需求,进度按排,团队状态,选择最佳的技术方案。一个小小的纸牌游戏,你非得用什么最流行的ERLANG去写,或者想学3D网游一样整出:日志服务器,网关服务器,登陆服务器,缓存服务等一大堆复杂无比的架构设计。大公司还好,小公司,可能还没等你开发完,公司就挂了。有时候程序的表现力太强,本来简单的事情,非得写出几千行带个N个设计模式的代码才甘心,这也是项目开发中的大敌。

        3.用断言来指出你的逻辑错误。高质量的ASSERT能帮助你发现很多程序的逻辑错误。没有人反对空指针检测的必要的性,但很多的时候,你的代码逻辑就能保证你要访问的指针不会是空指针。如果有人说他结婚了,但却说不出老婆的名字,这不是很可笑的问题吗?过度的空指针检测还会导至另一个问题:BUG的抗药性。因为有了空指针的检测,可能原本有错误的代码还在正常地运行着,等到你发现这个错误的时候,真正的错误原因可能离你很远了。

         4.对技术保持足够的敏感度,但不能因为技术而技术。不要告诉我,你写C++那么多年了,也不关心C++0x是什么玩意,或者你是做互联网产品的,却不知道NOSQL。新技术太多了,可能绝大部份技术对你现在的工作没有任何帮助,但最重要的是:如果有可用的技术,你能发现并且应用到项目中来改进现有的产品。我来公司面试之前,不知道MEMCACHED,但看门前的招辑信息上写有,回家后,第一件事就是百度MEMCACHED

0 0
原创粉丝点击