`
- 浏览:
21378 次
- 性别:
- 来自:
上海
-
程序员需要知道的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
相关推荐
9. **检查代码再责怪(Check Your Code First Before Looking to Blame Others)**:在出现问题时,首先应该检查自己的代码,而不是急于指责别人或外部因素。 10. **慎重选择工具(Choose Your Tool with Care)**...
如果 Wireshark 分析结果显示网络层面没有问题,那么问题很可能就出在程序员的代码上,如文件读写错误、错误的编码处理或者 CSV 解析问题等。 总之,Wireshark 是一个强大的工具,能够帮助 IT 专业人员深入理解网络...
在调试过程中,首先假设问题出在自己身上。这样可以避免过早地指责外部因素,有助于更快找到问题的根本原因。 ##### 5.4 充分发掘IDE调试工具功能 现代IDE提供了丰富的调试工具,充分利用这些工具可以大大提高调试...
嵌入式八股文面试题库资料知识宝典-华为的面试试题.zip
训练导控系统设计.pdf
嵌入式八股文面试题库资料知识宝典-网络编程.zip
人脸转正GAN模型的高效压缩.pdf
少儿编程scratch项目源代码文件案例素材-几何冲刺 转瞬即逝.zip
少儿编程scratch项目源代码文件案例素材-鸡蛋.zip
嵌入式系统_USB设备枚举与HID通信_CH559单片机USB主机键盘鼠标复合设备控制_基于CH559单片机的USB主机模式设备枚举与键盘鼠标数据收发系统支持复合设备识别与HID
嵌入式八股文面试题库资料知识宝典-linux常见面试题.zip
面向智慧工地的压力机在线数据的预警应用开发.pdf
基于Unity3D的鱼类运动行为可视化研究.pdf
少儿编程scratch项目源代码文件案例素材-霍格沃茨魔法学校.zip
少儿编程scratch项目源代码文件案例素材-金币冲刺.zip
内容概要:本文深入探讨了HarmonyOS编译构建子系统的作用及其技术细节。作为鸿蒙操作系统背后的关键技术之一,编译构建子系统通过GN和Ninja工具实现了高效的源代码到机器代码的转换,确保了系统的稳定性和性能优化。该系统不仅支持多系统版本构建、芯片厂商定制,还具备强大的调试与维护能力。其高效编译速度、灵活性和可扩展性使其在华为设备和其他智能终端中发挥了重要作用。文章还比较了HarmonyOS编译构建子系统与安卓和iOS编译系统的异同,并展望了其未来的发展趋势和技术演进方向。; 适合人群:对操作系统底层技术感兴趣的开发者、工程师和技术爱好者。; 使用场景及目标:①了解HarmonyOS编译构建子系统的基本概念和工作原理;②掌握其在不同设备上的应用和优化策略;③对比HarmonyOS与安卓、iOS编译系统的差异;④探索其未来发展方向和技术演进路径。; 其他说明:本文详细介绍了HarmonyOS编译构建子系统的架构设计、核心功能和实际应用案例,强调了其在万物互联时代的重要性和潜力。阅读时建议重点关注编译构建子系统的独特优势及其对鸿蒙生态系统的深远影响。
嵌入式八股文面试题库资料知识宝典-奇虎360 2015校园招聘C++研发工程师笔试题.zip
嵌入式八股文面试题库资料知识宝典-腾讯2014校园招聘C语言笔试题(附答案).zip
双种群变异策略改进RWCE算法优化换热网络.pdf
内容概要:本文详细介绍了基于瞬时无功功率理论的三电平有源电力滤波器(APF)仿真研究。主要内容涵盖并联型APF的工作原理、三相三电平NPC结构、谐波检测方法(ipiq)、双闭环控制策略(电压外环+电流内环PI控制)以及SVPWM矢量调制技术。仿真结果显示,在APF投入前后,电网电流THD从21.9%降至3.77%,显著提高了电能质量。 适用人群:从事电力系统研究、电力电子技术开发的专业人士,尤其是对有源电力滤波器及其仿真感兴趣的工程师和技术人员。 使用场景及目标:适用于需要解决电力系统中谐波污染和无功补偿问题的研究项目。目标是通过仿真验证APF的有效性和可行性,优化电力系统的电能质量。 其他说明:文中提到的仿真模型涉及多个关键模块,如三相交流电压模块、非线性负载、信号采集模块、LC滤波器模块等,这些模块的设计和协同工作对于实现良好的谐波抑制和无功补偿至关重要。