首页 程序笔记 做一个编写可调试代码的程序员

做一个编写可调试代码的程序员

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

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

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

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

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

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

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

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

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

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

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

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

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

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

你的代码是可调试的吗?

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

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

站心网

所有的程序最好能够以某种形式的日志记录下来,这样能方便我们即时知道现在在做什么。而且一旦出现异常,..

为您推荐

彩虹目录列表程序v1.5源码下载

彩虹目录列表是一款用PHP开发的目录列表程序,无需数据库,安装简单,使用方便。功能特点:在线预览图片、视频、音频、文本文件、Markdown文件、Office文档等自动识别目录下的README.md文件并展示(类GitHub)后台管..

代码照进现实:对公司管理策略的技术性解构

上学的时候觉得计算机专业的一些理论晦涩难懂,跟现实世界的关联太少,每当遇到一些精妙的设计时都会发出一种感叹:究竟是什么脑袋才能想出这么有意思的东西。一晃工作十年,阅历渐丰,隐约发现其实社会中的一些现象..

程序员职业发展与技能要求

程序员是从事计算机程序开发、维护和优化的专业人员。他们通过编写代码,设计软件系统,解决技术问题,推动技术创新。以下是程序员的一些关键信息:核心技能编程语言:掌握如Python、Java、C++、JavaScript等语言。..

程序员离职时删除代码注释算违法吗?

程序员离职前删除代码注释是否违法,取决于多个因素,包括雇佣合同、公司规定、法律条款以及删除行为的动机。以下是几个关键分析点:1. 合同与公司规定劳动合同或保密协议:如果合同或公司规定明确要求代码的完整性..

创造型职业程序员的无奈

编程是为数不多的一种既能满足个人爱好,又能赚钱的职业之一。烹饪是另一个这样的例子。在一般情况下,大多数职业要么不可能让你待在家里(例如医生和电工),要么你没有兴趣在家里做(例如清洁)。同样的,大多数好..

编写优秀 CSS 代码的 8 个策略

编写基本的CSS和HTML是我们作为Web开发人员学习的首要事情之一。然而,我遇到的很多应用程序显然没有人花时间真正考虑前端开发的长久性和可维护性。我认为这主要是因为许多开发人员对组织CSS / HTML和JavaScript的策..

程序员副业探索之电商

目录一、小程序化妆品1.1 小程序准备(营业执照&微信支付&小程序appId)1.2 小程序开发二、拼多多电商三、跨境电商四、总结在腾讯广告工作期间,我主要负责小程序电商与广告业务,见证了互联网电商行业的剧变,特别..

谈程序员如何做好业务

前言技术能做两种事情,通过技术实现业务和通过技术支持技术。我们大部分时候做的是前者,养活我们的大部分也是业务。 近两个月,作为项目负责人角色从0到1经历了新项目的几个版本迭代,跨入了部分新领域,也有一定..

程序员增加收入的几种方法

在这个互联网飞速发展的社会,学会如何make money很重要。咱们是个俗人,赚钱才是社会生存的头等大事。这不是高山流水的世界,而是能力创造财富,对于程序员来说,更是如此。作为程序员,我们有更多挣钱的姿势,注意..

程序员跳槽到对手公司,被前老板设计陷害

这件事发生在2007年,我就职的第一家公司。今天把它整理写出来,希望它对程序员有一个警醒的作用。永远要记住,程序员的世界除了有代码,还有被套路。资深工程师的苦恼第一天到公司,是浩子带着我办理了入职手续。浩..

程序员如何提一个好问题

提出好的问题是在编写软件时的一个非常重要的技能。这么多年来我对此也算略有小成。这里有一些我用着觉得很棒的指导方针!开始我实际上是那种总是会问出愚蠢问题或“不好”问题的大信徒。我一直在问人们一些愚蠢并且..

我是李玉宝,我是个程序员!

听说今天我的名字很火,那我也来凑个热闹。在2015年的时候,我做过一次人生总结,当时写了:为了理想,我放弃了一切! 转眼到了2019年,说说最近一年多的一些事情吧!做的好的!坚持把权限管理框架OpenAuth.Net做了..

程序员失业日记1:工作五年,交接半天

最近发现越来越多的小伙伴被公司裁员,有的是因为公司业绩不景气被裁员,有的是因为压力太大离职。很多公司都在裁人、减员。找工作也比之前难。刚好去年我也被上家裁员了,正好做一个系列的日志,希望能帮到在找工作..

天天写业务代码,如何成为技术大牛?

不管是开发、测试、运维,每个技术人员心理多多少少都有一个成为技术大牛的梦,毕竟"梦想总是要有的,万一实现了呢"!正是对技术梦的追求,促使我们不断地努力和提升自己。然而"梦想是美好的,现实却是残酷的",很多..

改善程序员生活质量的 3+10 习惯

一封离职邮件2017年的一天,代码伴随着手指极具节奏感地输出在IDE上,突然某Chrome插件弹出一封邮件提示:“今天是我在ThoughtWorks的最后一天”。遇到这种离职邮件,我都会点进去,一来看看是否是自己曾经共事的小..

倾听程序员的心声真的很重要

说到开发产品,没有人比程序员更了解产品。程序员知道产品的优点、缺陷、用途和潜在用途。说起这些,程序员了如指掌,如数家珍。在这个似乎无所不在的数字时代,倾听程序员必须要说的内容非常重要,而且也许比以往任..

助力程序员成功的几个好习惯

老实说,如果你google搜索“程序员的好习惯”这方面的内容,那么就会有很多大同小异的文章映入你的眼帘。但是今天我想从一个略有不同的角度来探讨这个主题。不是关于如何更擅长编程,而是如何使程序员更有市场竞争力..

倔强的程序员

对于程序员来说,大多数人公司都有技术和管理两条发展路线,通常在同一家公司,管理路线的发展可能性,要相对广阔一些;但是技术路线也有技术路线的好处,比如相对而言更依赖于硬实力,因而工作机会丰富。我相信有不..

程序员如何在当今就业市场中让自己脱颖而出

俗话说,钱不是万能的,但没有钱是万万不能的。可见钱对于生活的重要性。不管你从事什么职业,实现财务自由才能让你无所畏惧地应对挑战。但是还有一点是值得开发人员所关注的:如何脱颖而出与众不同。毫无疑问,软件..

领域驱动设计,让程序员心中有码(七)

-设计原则和设计模式,互联网开发者们共同的追求 前言多年来,笔者一直从事传统软件企业的软件开发和项目管理工作。笔者发现在众多的传统软件企业中,评判优秀开发者的标准往往是技能的熟练程度,基本上都是以梭代码..

发表回复

返回顶部