C++是自己的第一工作语言,我深刻的喜欢着这门语言,因为我觉得他有着许许多多的特性值得我去挖掘,诚如一门绝世武功,在高手手里总能运用自如,但是在普通人的手里,却只是普通的工具而已。开发语言在发展,虽然C++可能还存在着这样那样的不足,而且不太适合于某些开发需求,但是,我相信,每一个喜欢和运用C++的朋友,都是完美主义者,他们相信自己,相信自己可以很好的控制诸多不可预知的因素。我仍然不是一个C++高手,因为在C++的路上我还有很长的路要走,但是,至少,我喜欢C++!
我想写一些我的C++技巧总结,可能有些你已经在用,也有可能你觉得这些技巧很无聊,没关系,谁都有谁的开发习惯,无论如何,C++一直很棒。
     1). 结对编程
     第一次听这个概念间看梁兆新先生的书的时候提出的。我们的思维总是会有考虑不周全的点时候,结对编程可以帮助我们少犯一些编程方面的错误。例如,我们在写大括号的时候,先直接写好左右括号,而不是先写好左括号,然后,等着这段代码写完后再写右括号。当然这是小的问题,结对编程更重要的时候是我们用在指针方面。声明指针后并分配内存后,第一时间想到的是在什么地方开始销毁指针,以防止内存泄露。
     2). 使用string来代替char*
     你是在使用C++,而不是C,虽然char*或是char[]很灵活,但是,你却要为此做大量的工作。不需要了,C++已经替你做到了。std::string和std::wstring, 使用标准的C++字符串,定义灵活,使用方便,你不必理会他如何管理,你只需要使用他即可。在多数情况下,他可以满足你的大多数需求。
     3). 统一的代码风格
     更多的人使用匈牙利命名,虽然这种命名很棒,不过你仍然可以有自己的风格。以前的开发部门总监是个大牛,他经常在Linux环境下开发C++程序。对于变量的定义,他不喜欢大小写混输,你更喜欢普通变量全部用小写加下划线来表示,这一点影响了我,在linux下面编程的人的习惯是这样的。使用空格来代替制表符,这一点可以让你在无论何种编辑器下面,看到的代码格式都是一致的,而不受编辑器对于制表符的定义的影响。
     4). 从GCC开始学习和使用C++
     虽然Visual C++或者是C++ Builder这样的IDE很棒,但是,他们无疑做了许多的工作,虽然这些工作提高了你的开发和工作效率,但是,却让你了解了更少的编译的过程。使用一个纯文本编辑器,带有语法高亮功能,例如VIM, 使用gcc来编译程序,自己写makefile, 使用gdb来调试程序。可能你需要在不同的环境下来回切换,不过,没关系,你需要的是习惯这种环境。visual c++ 2010确实有许多不错的特性,但是,在我的4G内存的机子上跑得依旧很吃力,但是,刚才提到的开发环境不会有这样的感觉。
     5).使用定义的常量来代替数字等常量
     当代码中出现 a+= 10; 时,我们不知道这个10代表什么意思,或者说,你需要为这个10做一点的注释,那不如麻烦一点,将他定义为一个常量,或者用#define WIDTH 10,或者用const int width = 10; 至少我们在代表中表示 a+= width; 的时候可以清楚他所表示的含义。
     6). 关于指针的销毁
     指针的销毁很常用,我们需要先将指针delete,然后再将其指向空NULL,我一般喜欢定义一个宏来进行操作,看起来简洁又大方:
#define FREE(x) if(x) delete x; x = NULL;
     7). 使用C++风格的类型转换
     虽然在C里面采用显式的类型转换很方便,但是,那是不安全的。C++自己有一套自己的类型转换,包括dynamic_cast, static_cast, reinterpret_cast, const_cast,建议使用。
     8). STL容器,你的好朋友
     无论是vector,还是set,还是stack,这些STL容器的熟练使用,可以让你在开发过程中事半功倍。还有泛型算法,结合STL容器,可以解决你许多的算法问题。
     9). 合理命名用别名
     typedef在适当的时候使用,可以提高代码的可读性。注意,你的代码不仅是要让机器读的,也要让人也可以读得懂。
     10). 不错的C++扩展库: boost
     boost解决了许许多多你可能一直困惑的问题。虽然有时候你可能更喜欢自己封装一些算法,但是,如果这些算法已经有更加专业的人实现了,那么请不要再重复发明轮子。当你仔细了解boost后,我认为你会喜欢她的。

[转载]我的C++技巧总结相关推荐

  1. 转载:DataTable使用技巧总结

    在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结. 一.DataTable简 ...

  2. 转载:vi/vimvim技巧

    vi/vim虐我千百遍,我待vi/vim如初恋 置顶 TrueDei 2020-03-25 12:20:20 15992 收藏 1649 原力计划 最后发布:2020-03-25 12:20:20首发 ...

  3. 转载:CSS hack技巧大全

    原文地址:http://www.duitang.com/static/csshack.html part2 -- CSS hack技巧大全 --作者:吴雷君 兼容范围: IE:6.0+,FireFox ...

  4. 【转载】ESFramewor使用技巧(2)-- 在插件中使用NHibernate

    ESFramewor使用技巧(2)-- 在插件中使用NHibernate     我们来讨论一下这种情景,你采用基于ESFramework的4层架构进行应用开发,你分析用户的需求,并将其分类整理为几大 ...

  5. (转载)SQL高级查询技巧

    1.UNION,EXCEPT,INTERSECT运算符 A,UNION 运算符 UNION 运算符通过组合其他两个结果表(例如 TABLE1 和 TABLE2)并消去表中任何重复行而派生出一个结果表. ...

  6. [转载] Python性能优化技巧总结

    参考链接: Python代码的优化技巧 欢迎加入Python学习交流群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 ! 选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 pyth ...

  7. 【转载】VS2019使用技巧

    大家好,今天分享几个我知道的实用 VS 技巧,而这些技巧我发现很多人都不知道.因为我经常在工作中遇到:我在同事电脑上解决问题,或在会议上演示代码示例时,使用了一些 VS "骚"操作 ...

  8. ddr布线 pads_[转载]Pads Router布线技巧,等长,蛇线,差分

    1 PADS过孔设置 2 控制走线长度 3 PADS 蛇形布线 4 PADS差分对布线 5 PADS等长布线(DDR) Router高级布线技巧 当设计高速信号PCB或者复杂的PCB时,常常需要考虑信 ...

  9. linux shell gsub,[转载]Linux Shell常用技巧(五)-第二部分

    6. 数组:因为awk中数组的下标可以是数字和字母,数组的下标通常被称为关键字(key).值和关键字都存储在内部的一张针对key/value应用hash的表格里.由于hash不是顺序存储,因此在显示数 ...

最新文章

  1. python twisted 笔记
  2. java try catch_异常处理,JAVA中异常处理的介绍
  3. java域对象_javaWeb域对象
  4. command not found: ls_内饰更加奢华 新款雷克萨斯LS将于广州车展亮相
  5. 整理照片,python批量修改名称
  6. C/Cpp / 设计模式 / 观察者模式
  7. python的matplotlib的函数_在Python中使用matplotlib绘制条件函数
  8. PostgreSQL从未授权到高权限命令执行
  9. 2018百度之星初赛B轮 p1m2
  10. [转]ffmpeg库音频解码示例
  11. android水下气泡,科学网—水下爆炸气泡的基本现象及规律 - 黄超的博文
  12. CATIA二次开发(一):CAA简介
  13. 建筑装饰毕业论文题目
  14. Chrome 鼠标左击右击无效解决办法
  15. 手机服务器 微信QQ,玩家天价买服务器语聊开黑 小白没想明白:微信QQ难道不行?...
  16. “拆股”买投资房正在成为现实,不用攒钱也能买上房
  17. 通过百度语音api实现语音控制五子棋——基于flask
  18. 《算法》读书笔记(一)
  19. 让cygwin方便安装软件 apt-cyg
  20. 为什么下水井盖是圆的

热门文章

  1. python的pulp包_求助一下python的pulp
  2. linux timer 回调函数,Linux内核中关于定时器Timer的应用
  3. 21天混入数据科学家队伍(下)
  4. 春节不背电脑的你,用什么办公呢?这些移动办公软件你应该知道
  5. Zookeeper节点数据备份与恢复
  6. 有孚专有云如何助力高校数智化转型
  7. THREE.js实现蝴蝶随机方向飞舞(飞行过程中可随机改变方向)
  8. java中findcolumn('xx')是找到数据库中的对应列么_2015年12月11日
  9. js通过QRCode生成二维码并下载
  10. 财务职能转换,财务机器人上岗后员工何去何从?