编写优质无错代码
《编程精粹 - Microsoft编写优质无错C程序秘诀》是我很久之前看过的一本电子书。之前想过买纸质书,但是在网上和书店找了一番都没找到。找到类似的书名,不过都不是这本书。
这本电子书一直收藏在我的电脑里。前面也有把它直接打印出来过。因为这本书的总共才一百多页。在计算机类书里,算是薄的了。这本书,对我的影响很大,改变我的编程思想和习惯。我反复看过很多次。
虽然近些年,我基本上C#开发为主,很少写C/C++代码,但是编程的一些思想其实是相通的。
我较少推荐给别人,这本书知名度不是非常高,所以我比较愿意称它为码农界的秘籍。从小武侠片就教育我们,但凡是秘籍就不能随便相送。当然也有推荐给别人,却引不起足够重视的。
这本书的引言部门就已经吸引了我,说是作者看到一本书的序言的时候,深深触动了他。写的是那本书的作者称自己写的代码已经排除了所有的BUG。只要有人能在这本书里找出一个BUG,就给第一个发现者20.48美元。
做过开发的都知道,程序有BUG太正常了,有几个人敢这么开口说。书中的一句话写得相当形象:【每当代码被打包装送给程序经销商之前,人们在胸前划着十字带着最好的愿意说:“希望测试已经发现了所有的错误”。】
书中提到两个关键问题,就是发现错误时,不断地就以下两个问题追问自己的结果:
1、怎样才能自动地查出这个错误?
2、怎样才能避免这个错误?
这本书的表达方法我也非常喜欢,作者其实也是借鉴之前的经典著作的。主要是:
1、给出一个例子;
2、指出该例子中的某些问题所在;
3、用一般的准则改进该例子。
而且作者也到,也把它列为第一条准则:【每条准则都有例外】。
作者举了不准闯红灯的例子,这让我想起之前网上一个视频,一辆小车拦着一车正在执勤的消防车,怎么也不敢开,到最后还是旁边车道的车闯了红灯让出道的。
我通过这本书的阅读,结合开发经历,总结出来几条经验:
1、当发生了我们编程时意料之外的情况时,尽可能想办法能让我们自己知道。Assert方法和错误日志是不错的方式。
2、理解什么时候需要保护和异常处理,什么时候不应该保护并且想办法抛出异常。
3、提交代码之前,一定要Review代码,把自己所有的修改都重新看一遍。书里其实是要求,提交的代码都单步调试过。确实有些错误,阅读代码比较难发现,单步调试却很容易发现。
4、写下每一个if的时候都应该考虑else的情况。
不过依赖黑盒测试,书里面举的例子是用问一个问题来测试一个人是不是疯子,但很多时间我们会担心问的是否全面准确。
投资者和赌徒之间的区别在于投资者利用每一次机会,无论它是多么小,去争取利益;而赌徒则只靠运气。
【使用编译程序所有的可选警告设施】
【如果有单元测试,就进行单元测试】
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧