`
- 浏览:
20942 次
- 性别:
- 来自:
上海
-
程序员需要知道的97件事情之----- 在指责其他原因前首先请检查自己的代码
本人英语抄过4级,奇烂无比,翻译这个实属蛋疼,错误是肯定有的,而且是翻不出出来就是随便猜,欢迎指出,谢谢啦。但愿我能够翻完我看的懂的....
原链接:oreilly的程序员需要知道的97件事http://programmer.97things.oreilly.com/wiki /index.php/Contributions_Appearing_in_the_Book
程序员们, 包括我在内的所有人!经常有怀疑自己的那部分代码被破坏的疑惑。这一般是不可能的。如果发生一次,也可能是编译器破坏的。
事实上,代码被编译器,DB,应用服务器,内存管理器BUG破坏的概率低到不能在低了。使得,它们存在BUG,但是他们的发生的概率使得我们安全可以忽略它。
我曾经也遇到过一次编译器优化循环遍量的BUG,但是我想象了很多种编译器或者操作系统的BUG,我在处理的过程中浪费了大量的时间,可是每次都仅仅发现自己的愚蠢,因为每次最后都发现时我自己的错误。
假设工具被广泛的使用,成熟之后在各种技术中使用,他们不应该被经常怀疑。当然,不如这工具还是初期版本,仅仅在小部分人中使用,很少下载量,比如0.1版本的BETA开源软件,他们可以成为怀疑的对象。(公平的说,内测的版本都是可以被怀疑的对象)
鉴于工具或者底层平台之类的基础发生BUG的概率可以忽略,这样我们就该把更多的精力放在代码的调试上面,通过测试和debug;来发现问题。通常的debug建议有:隔离错误问题,围绕问题进行测试。检查调用约定,共享变量,版本号等,找出中断栈和变量类型不匹配;试着让代码在不同的机器上运行或者不同的配置环境下,debug或者发布等等。
怀疑你自己的设想和他人的设想,不同的厂商的工具有不同的构建方式---所以最好可能在开发中用同一家厂商的各种不同的工具。
当他人报告了你没有遇见过的问题,去看看他人的解决方案,他们可能提供你从来没有想过的解决方法,这对你很有帮助。
作为一个我个人的习惯: 如果我有一个我不能解决的BUG,我会想像我是编译器,是时候去寻找混乱的栈。如果我们加入调试跟踪代码,让错误出现,这样看起来很真实。
多线程的问题是引起BUG的另外一个源头,这让机器很头疼的问题。所以的建议都是当系统是多线程的时候,让代码尽量简单。Debug和单元测试很难发现多线程的问题,所以设计的尽量简单是非常重要,这对于我们查找错误还是很有帮助的。
所以,在你指责编译器犯错的时候,记住Sherlock Holmes的忠告:排除你确认的不可能发生的问题,不管保留下来是的什么东西,也不管有多么的不可能,一定要坚信,这就是真相!。
By Allan Kelly
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面右键多余菜单删除代码---程序员SUMER 桌面...
简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选简历模板-程序员-通用-精选...
WINDOWS程序员使用指南(三)----OLE_DDEWINDOWS程序员使用指南(三)----OLE_DDE
WINDOWS程序员使用指南(五)----OBJECT WINDOWS库WINDOWS程序员使用指南(五)----OBJECT WINDOWS库
9. **检查代码再责怪(Check Your Code First Before Looking to Blame Others)**:在出现问题时,首先应该检查自己的代码,而不是急于指责别人或外部因素。 10. **慎重选择工具(Choose Your Tool with Care)**...
在程序员的开发世界中,手机游戏制作是一片充满创意和技术挑战的领域。手机顶尖游戏的制作不仅涉及到编程技能,还涵盖了艺术设计、音效、项目管理等多个方面。本资源"程序员开发之路之---手机顶尖游戏制作全揭秘...
《JSP程序员成长攻略》-蒙祖强-源代码
软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---学生管理系统--程序员SUMER 软件工程课程设计---...
软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程设计-----Release.rar --程序员SUMER 软件工程课程...
程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 程序员表白神器你值得拥有-程序员表白神器你值得拥有 ...
WINDOWS程序员使用指南(二)----MICROSOFT基本类库WINDOWS程序员使用指南(二)----MICROSOFT基本类库
程序员必备技能----断点调试(IDEA版)---- 代码
黑马程序员-SpringCloud-学习笔记-03-Eureka注册中心
《C++ Builder程序员成长攻略》-蒙祖强-源代码.part02
《C++ Builder程序员成长攻略》-蒙祖强-源代码.part01
VC6.0的四种清屏函数代码--程序员SUMER VC6.0的四种清屏函数代码--程序员SUMER VC6.0的四种清屏函数代码--程序员SUMER VC6.0的四种清屏函数代码--程序员SUMER VC6.0的四种清屏函数代码--程序员SUMER VC6.0的四种清屏...
"程序员的代码的代码的代码"这个标题可能是在强调代码的层次性、嵌套性或者递归性,暗示着代码间的相互依赖和复杂性。在描述中,连续重复的短语进一步突出了这一点,可能意味着代码的深度集成或者高度复杂性。 首先...
帝都与魔都的程序员们都喜欢在情人节选择咖啡厅作为约会地点之一,不同之处在于魔都程序员更倾向于国际连锁品牌咖啡厅,如星巴克和太平洋咖啡,而帝都程序员则在选择咖啡厅时更为多样化。 #### 娱乐篇:丰富多彩的...
《C程序员成长攻略》-黎陡-源代码 需要的朋友就支持一下吧,我找了很久找到的
程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历模板10份--蓝色主题 各不相同 程序员简历...