电子书《有关编程、重构及其他的终极问题?》的翻译
标签(空格分隔): 翻译 技术 C/C++
作者:Andrey Karpov
翻译者:顾笑群 - Rafael Gu
校验者:高国栋
最后更新:2016年11月5日
说明:
一天,一位我并不认识的俄罗斯姑娘联系我,问我是否愿意把一些有关编程的文章编程成中文,并且在中国推广,我说先看看大概是什么文章再说,她就给我发了一个链接,我发现是一些C/C++等语言如何避免bug,如何高效编程的系统整理后的长文,就觉得每周翻译一些的这样的英文编程文章也还不错,就同意了。她问我翻译的酬劳是多少,我说随他们给——其实我的态度是:每个周末休息时翻译些有趣的技术文章也应该不错,有酬劳更好,没有也没有关系。
原电子书的标题是《The Ultimate Question of Programming, Refactoring, and Everything》,
我会每个周末根据时间翻译几节,直到全部翻译完成。大家在下面可以看到的书的目录,凡是有链接且用中文描述的条目的就是已经翻译完成的,点击就可进入对应的小节。如果大家等不及我完全翻译完,可以直接去看 http://www.viva64.com/en/b/0391 )。
我习惯使用使用Emacs Keys,所以使用了Cmd Markdown的Emacs模式写下翻译的文字,然后把导出的md文件导入到CSDN博客的markdown编辑器里发布(我的CSDN博客地址是:http://blog.csdn.net/headman )。
大家如果在阅读中发现任何翻译或其他问题,可以给我发邮件:shoutrain_goo@aliyun.com。
最后,欢迎大家转载,但请附上原作者以及翻译者的名字、原文出处,以尊重光荣的劳动者。
简单介绍
这本书本身是针对C/C++程序员的,但其实对其他语言也一样有效。
这本书的特别之处在于,书中的例子都基于实例而不是理论。书中每个小节的都以一段从实际项目中提炼出来的有bug的代码,然后作者会通过不同角度分析如何避免这些bug。整本书所针对的问题以及解决方式,可以帮助读者提高个人在团队内的编码风格和编程规范。
这本书覆盖了42个主题(详见下面的目录),尽管每个主题的标题很简单,但其对应bug的发现和解决是多种多样的。另外,每个主题还给出了相关的有趣资料链接,可以让读者得到和主题相关颈详细的信息。在这个目录后面,还有更多对标题所谓“终极问题”的简单回答,内容介绍和作者介绍,不要错过。
目录
- 别把编译器的事给做了
- 比0大的并不意味着就只是1
- 复制一次,检查两次
- 小心–操作符,请把表达式放在括号中
- 使用工具去分析你的代码
- 当把一个指针明确的转换为整型时,请检查所有相关代码
- 不要在循环中调用alloca()函数
- 记住:析构函数中的异常是危险的
- 使用’-0’符号作为结尾标记
- 避免使用多个小的#ifdef块
- 不要试图把尽量多的操作符放到一行代码里
- 当使用拷贝黏贴,一定要特别注意最后一行
- 表格化的格式化
- 一个好的编译器和代码风格还不够
- 在你的代码中开始使用enum class吧
- 在编程过程中“装逼”是不可接受的
- 使用专门的函数清除专有数据
- 你在一个语言上积累的经验和知识不总是适用于另外一门语言
- 如何合理的从一个构造函数中调用另外一个构造函数
- 光对文件做EOF检查可能还不够
- 正确的检查文件的结尾符(EOF)
- 不要使用#pragram warning(default-X)
- 自动获取字符串的长度
- override和final关键字应该成为你的新朋友
- 不要再用this指针和nullptr比较了
- 潜伏的VARIANT_BOOL
- 狡猾的BSTR字符串
- 如果你可以使用简单的函数就不要使用宏
- 在迭代器上请使用前置自增操作符(++i),不要使用后置自增操作符(i++)
- Visual C++和wprintf()函数
- 在C/C++中数组不是值传递的
- 危险的printf
- 永远不要非法引用空指针
- 容易被你忽视的未定义行为
- 给enum新增常量后不要忘了修改对应的switch操作
- 如果你在电脑上发现一些奇怪的事情,看看内存吧
- 注意在do {…} while (…)中的continue
- 从今以后使用nullptr而非NULL
- 为何不正确的代码可以工作
- 开始使用静态代码分析
- 尽量避免在项目中增加不必要的新库
- 不要使用“empty”作为函数名
尾声
更多介绍
是的,你猜得对——答案就是“42”。在这本书中,你会发现42个关于C++编程的好建议,都是关于如何帮助一名程序员避免许多错误,节省开发时间,提高开发效率的。这本书的作者是Andrey Karpov,也是‘Program Verification System’研发团队的技术总监,我们这个团队主要负责PVS-Studio静态代码分析器的研发。在经历过大量的开源项目后,我们已经找到了很多规则来让你的编程更厉害,我们也准备把这些规则分享出来。每条规则都辅以一些经过历练的的代码示例。这些规则不光对C/C++程序员有帮助,大家知道编程思想是相通的,所以其他语言的程序员也会受益于此。