关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 程序人生 »你是一个编写可调试代码的程序员吗?

    你是一个编写可调试代码的程序员吗?

    2014-10-23 00:00:00 出处:ITJS
    分享

    所有的程序最好能够以某种形式的日志记录下来,这样能方便我们即时知道现在在做什么。而且一旦出现异常,其重要性就愈加明显了。我们之所以要把程序员分成三六九等,很大一个原因就是,一个伟大的程序员会去写日志和调试工具,这样一旦出现问题就能调试程序。

    要是程序运作正常,那么可能写不写日志没啥区别。但是,不怕一万就怕万一,万一程序崩溃或者出来一个错误的结果,那么这个程序员好不好马上高下立现。

    例1:“我们先搞一个调试版本吧。”

    举个例子,测试人员跑来告诉我说有一个调用函数不工作了。我们先查看了日志,然后发现原因可能出在相邻的模块上。调用这个模块返回的却是一连串null值。当我们查阅相邻模块的日志记录并重新运行测试时,却没有获得任何有用的信息。对于为什么会返回null毫无头绪——不知道是参数错了,还是外部系统出了故障,亦或是相邻模块有bug,Who knows?

    当我们去咨询负责该段代码的开发人员时,他们的回答是:“这个简单,我们先搞一个调试版本吧。”最终往往还是不行!因为我们根本不知道是哪里出了问题,出了什么问题。而且要是已经到了生产阶段,增加调试版本就意味着增加更多额外的工作。代码的日志里面得包含足够多的信息,以便于一旦出现问题我们可以找到解决的关键所在。

    例2:告诉我我们应该怎么做

    我们产品的一个作用是为SMS(短信)找到成本最低的途径并将路径传达给相应的手机。由于当前手机的位置以及用户所属的运营商的不同,理论上存在着很多很多的可能路径,而且每一条路径都有一定的成本和相应的优缺点。此外,还会有各种意外会导致不得不禁止某些路径或者加重某些路径的权重。系统通过给定约束条件,搜索到最便宜的路线然后返回提供给SMS。

    现在,假设某短信建议使用路径A发送,但是我们认为路径B更好,那么路径A又是怎么被选上的呢?要是没有日志资料,光看那可能的成百上千条的线路,看它们的成本和复杂的算法,我想我会疯掉。幸亏日志里给出了之所以选择路径A的原因。Thank Godness!

    日志里面包含了所有可能的路线,并按成本进行排序。哪怕是由于条件限制而淘汰的路线也会列在日志里,并附上之所以淘汰的原因。总之,在日志里会将如何把所有信息输入到算法中以得出结论的各个步骤描述得一清二楚,以便于我们知道为什么要选择相应路径。

    为什么不愿意写可调试的代码?

    既然好处大大的,那么为什么不是所有的程序员都愿意写可调试的代码呢?原因有三:

    1.得有足够的自知之明,能认识到万一程序发生异常的情况。不过很多程序员往往要经过很长一段时间才会明白“老子并非天下第一”。

    2.彻底地测试代码才能保证它能在各种场景下都能正常运作。而且每个场景都要写日志。要是不都测试一下,那你怎么知道哪里需要添加记录。

    3.很多程序员往往对自己的代码做不到精益求精。要是在现场演示的时候系统出了问题,但是在日志里又看不出是为什么,那么最好能在日志里加点什么,以防下次再碰到类似的情况。

    你的代码是可调试的吗?

    当然也会有这样的情况,那就是日志写的很好,但是你还是不知道问题的关键原因。这时候,你可能还是得创建一个调试版本。但是你的日志最最起码得能给出问题的线索。

    最后,请问大家,你的代码是可调试的吗?当代码出现问题,你的日志能告诉你是怎么回事吗?

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    苹果将发布第三财季财报,很可能会超预期

    25 年第三季度 NAND Flash 合约价格预计将上涨 5-10%

    亚马逊网络服务 (AWS) 已裁员数百人

    邦彦邦彦云PC”新一代云上真机解决方案重磅亮相

    苹果Mac book产品线未来两年大升级:M5、M6系列芯片来袭

    净网—2025|代抢?录入?小心 “票圈陷阱”!

    脱下皮衣,英伟达 CEO 黄仁勋穿唐装亮相中国国际供应链促进博览会

    ATTO360 Storage 软件通过单一智能平台重新定义存储管理

    DigitalOcean 推出 DigitalOcean Gradient AI 平台

    网传华为盘古大模型疑似抄袭通义千问,盘古团队否认

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术分享

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。