导航:首页 > 程序命令 > bug很少的程序员

bug很少的程序员

发布时间:2024-06-02 03:24:18

程序员如何让自己的程序少出BUG(转)

软件测试心得
,而且还经常写一些工作上的事,现在感觉自己老了似的,开始转型了,会选择写一些总结而不是琐碎,也许这是我以后当领导的征兆吧。
程序员是善于思考的一个职业,做过这行的都知道,写一个程序的过程都要经过构思、设计、写代码、测试到最后运行这几个步骤。慢慢地,这个习惯也被搬到了生活中,现在我才觉得,我平时做事这么的冷静善思考原来是工作影响的原因。
象我一样,大多程序员都有一个毛病,或者说一个习惯,自己编写过的代码都不愿意测试,他们凭着自己的习惯,理论上完成了代码的编写就认为自己的工作结束了,剩下的工作应该交给测试人员了。但实际上来讲,如果代码存在BUG,造成软件在运行期出错,那么测试人员和客户肯定会发现这些BUG的,再等到测试人员或者客户把BUG反馈回来的时候代价就已经很大了,不仅仅是时间的浪费,更重要的还有1、影响了客户对产品以及公司的信任度,2、影响了程序员自己的声誉,3、影响了代码的可读性以及质量,4、增加 了DEBUG的难度,5、对程序员的心理造成一定的影响。
首先,程序员应该克服自己身上的一些缺点,这是很重要的一点,因为每个程序员都有自己的编程习惯,而且每个程序员对自己刚刚完成的程序都会信心百倍的说“绝对没问题”,实际上这种想法很正常,因为每段代码都是通过程序员认真谨慎的思考和设计之后才写出来的,在设计时已经排除了很多问题,所以程序员不会将自己认为不正确的判断写到程序里,但这仅仅是理论上的想法,但人哪有不反错的时候。其实程序员在读其他人写的程序的时候,就会很谨慎,仔细找到程序上的错误,但对自己的代码就很难这样做,如果把这种谨慎应用到自己的代码上来,BUG会减少到最少。软件工程所说的各阶段工作想必大家都清楚,前期的设计以及需求分析才是一个软件工程的重点,这里也是花费时间最多的地方,当对要写的程序有了一个清晰的轮廓之后再动手编写代码。
第二,刚刚提到的前期设计,是指在编写代码之前所作的工作,这要求程序员对系统的整个结构以及逻辑有很清楚的理解,这也要求对系统的需求做到位。我没有写过文档,所以这里不谈文档了。思路清晰很重要,但每个人并不能将系统的整个设计思路都记在脑袋里,那最好就写下来,特别是一些复杂的逻辑结构关系还有复杂的算法
第三,代码的编写,要尽量减少拼写的错误,严禁使用关键字作为变量来使用,要尽量做到代码模块化,并且保证其正确性和可重复使用性。因为是模块组成的,写过之后可以将每个模块部分单独测试,因为代码量少了质量自然提高了。对顺序执行要求很高的函数尽量不采用调用子函数的方法,让程序按顺序走吧。
第四:代码检查以及系统功能测试,这是保证代码质量的最后一步了,我们可以写一些代码模块或者小工具来进行测试工作,跟踪变量值的变化,使用一些小技巧在这个阶段都是必要的,这里和测试人员的测试不同之处在于:仍然让程序员的注意力放在其自己的代码范围内,减小了排错的难度。
按照如上步骤来走的话,那么我想你的系统应该足够健壮了。
把对待别人代码的态度放到自己的代码上来,也就是反复的Review自己的代码检查逻辑错误也是相当好的办法。别把自己辛苦写的代码看的很值钱,在团队中尽量与别人分享、Review代码这是实际工作的经验。
作为一个优秀的程序员要具备这些习惯,看自己的代码就象对待自己的一样,爱惜、呵护是必须的,同时也要象园丁一样及时修剪多于的树枝来让自己的代码走正确的道路。

❷ 程序员遇到百度不出来的bug都是怎么解决的

笔者不同意下面网友的回答。程序员如果解决bug的水平停留在网络,那么本质上只是一个“面向搜索引擎的代码搬运工”,是不合格的程序员。

程序员对面bug,正确的“打开方式”是像福尔摩斯和柯南那样,寻找线索、运用逻辑推理来缩小问题可能的根因范围,最终精准定位。

常用的方法有:

1. 坏境上下文变换法

2. 工具调试法

3. 版本回溯对比法

4. 代码审计法

……

没有编程问题是stack overflow和Google解决不了的,假设你在编程中遇到了问题,你自己解决不了、你周围的的人都解决不了的时候,我觉得stack overflow、Google是你最好、也是最后的帮手。

作为一个程序员,我觉得Google、stack overflow是你必须要学会使用的两个工具,这两个工具本身并没有使用门槛,只不过因为一些众所周知的原因,很多人不能使用Google和stack overflow这两款工具。

Google主要还是方便,而且很多编程问题都需要用到英文搜索,当然现在网络在专业能力上也提升明显,不过跟Google也还是有比较大的差距,因此我还是强烈建议要学会使用Google,这会帮你在工作、学习上事半功倍。假设Google确实因为某些原因没办法很好的使用,我也建议你至少要会使用Bing搜索。

现在可以说stack overflow上没有你找不到的问题了,从IDE环境安装问题,到各类编程语言问题。算法问题,数据结构问题,调试,重构等等,几乎这里就没有你找不到的答案,可以说在stack overflow上你可以找到任何解决方案,并且上面的回答者基本上都是非常有经验,而且都是实际中遇到的问题分享出来的,这个工具一定要会使用。同理,除了stack overflow这个专业的垂直程序员问答社区,你也可以使用Quora这个综合问答社区,这上面也能找到很多问题的答案。

一些比较优秀的文本编辑器: Emacs/Vim,Visual Studio Code,Sublime Text,Atom,Ultraedit,Hbuilder等。

一些比较非常出色的IDE集成开发环境: visual studio,IntelliJ IDEA,PhpStorm,Haskell for Mac ,eclipse,WebStorm,GoLand,CLion,Android Studio,Xcode,QT等。

macOS平台比较好的第三方包管理工具: Fink,Macports,Homebrew等。

一些比较好的终端工具: Zoc7,iTerm2,Cmder,terminus,hyper等。

一些比较好的笔记软件、markdown工具、效率工具: Evernote,有道云笔记,为知笔记,Ulysses,MWeb,FileZilla,Snipaste,Kantu等。

虚拟机软件、容器软件: Parallels Desktop,VMWare Fusion,Virtual Box,Docker等。

我是个程序员,职务是linux底层驱动工程师。平时的主要工作是调试驱动,但产品遇到诸如死机、重启、不开机之类的问题时,也要参与查找原因。一部分问题,确实可以查看相关的log,然后网络这些log的关键字来解决;但更多的问题,牵扯的条件太多,并不是简单的网络就能解决的。

观察了周围同事们的做法,我总结出以下几种解决方法:

网络因为竞价排名的原因,搜索出来的结果有很多广告的成分,所以有时候要翻好几页才能看到一条相关的答案,有些甚至要翻几十页。

因为网络搜索使用的是SEO技术,即普通用户可以通过优化网站内容来提升关键词排名。

而这就会导致一个问题:你搜索关键词后展现出来的结果是有人想要让你看到的,并不是质量最好的。

也就是说,网络搜索结果被人为干预了。所以网络一直被网民所诟病。

但网络搜索不出结果,未必是网络的原因,也有可能是自己输入的搜索词不准确造成的。所以对于网络,我们要做到如下几点:

除此之外,网络搜索还有点小技巧,粥左罗《万字干货,彻底讲透搜索技巧,10倍提升你的搜索力(免费教程)》这篇文章写得非常好,我整理几点,仅供参考:

01 过滤目标内容

命令:“+”“-”

用法:通过“+”和“-”来对搜索结果进行过滤

比如在关键词后加上“-推广 -推广链接”就可以排除搜索结果中包含相应字样的链接。如果你发现广告还没有排除干净,你也可以再加上“-广告”通常就能彻底的消灭广告。

02 搜索包含某关键词的内容

命令:“intitle”

用法:通过“intitle”命令指定搜索结果中要包含的关键词,注意“intitle”后边连接的冒号是英文状态下的。

03 搜索某一个格式的文件

命令:“filetype”

用法:通过“filetype”命令可以限制我们要搜索文件的类型,注意“filetype”后边接的冒号也是英文状态下的。

04 搜索特定时间范围的内容

命令:“时间..时间”

用法:通过“时间..时间”命令可以限制我们要搜索的文件的时间,注意两个时间的中间顿号没有空格。

相对网络,谷歌、必应对于技术搜索,就相对准确许多,所以当你网络搜索不到时,尝试下别的搜索引擎,说不定会有新发现。

现在程序员使用的机器语言,都是国外的,更准确的说,都是美国的。所以很多论坛、资料等,都是英文。如果你只会用中文来搜索,某些小众的问题,当然搜不到啦。

所以,要学会使用英文关键字来搜索。

有时候甚至要去国外的一些论坛来搜索想要的答案,这就要求要有一定的英语阅读能力,不能一看到英文帖就放弃。

有时候不管你如何搜索,都找不到自己想要的答案,该怎么办呢?这种情况下,就只能硬着头皮尝试自己解决了。

或者,寻求同事或朋友的帮助,寻求大脑风暴,说不定就会有思路。

如果有些问题是因为新器件带来的,还可以找到器件供应商,让他们安排技术支持帮忙查找原因。

除此之外,还可以把问题整理好,写清发生的条件、复现步骤、测试方法、相关的LOG截图等资料,去一些技术论坛发求助帖,寻找大牛的帮助。

做技术时间久了,发现有些问题确实无解,根本没有办法去解决它。

这时候,我一般会尝试把它绕过,就是说,想办法让它无法复现,虽然问题还是存在,但是能把它掩盖过去。

比如有些驱动在开机启动时会加载不正常,那么就让它晚点启动,或者手动加载。这也不失为一种解决问题的方法。

以上就是我的建立,希望对你有帮助。

首先作为一个程序员,一个优秀的程序员最最最重要的能力就是解决问题的能力。这里解决问题的能力当然就包含了解决 bug 能力了

毕竟,程序员这一生,可能会写无数个 bug ,没有说哪个程序员敢保证自己写的程序没有 bug 。 所以,写了 bug ,遇到 bug 并不可怕,可怕的是你没有解决 bug 的能力 。

作为一个程序员,解决 bug 的途径有哪些呢?我们来一起聊一聊!

其实,每个程序员在学习编程的时候,都会使用编程工具,而现在的开发工具,其实功能都很强大。如果你自己合理利用编程工具,都了解和懂得开发工具的一些技巧,其实不仅仅能够提高开发效率,而且还能够帮助你解决很多编程中的实际问题。

debug 调试,大部分你常用的开发工具,都会有调试模式的,简而言之,就是你编程的时候,遇到了不是自己所想的结果的时候,你可以使用 debug 模式,来一步一步的调试,在调试模式下一般每一步都会显示所执行的结果,你可以看看在哪一步出错了,执行的结果与你预想的结果不对,那么你就能够找到问题所在了。

还有就是,开发工具的控制台,都会提示出报错信息的,现在的开发工具,都会直接告诉你哪一行,报了什么错。其实,很容易定位到错误的。你只需要在编程的过程中积累经验,知道报什么错,用什么方法来解决就行啦。

可是,提示的报错信息,我不知道用什么方法来解决的时候,该怎么办呢?这就是你需要积累的,也是问题中所描述的,就是通过搜索引擎来找答案。

不对,这里不应该是合理使用搜索引擎,应该是学会正确使用搜索引擎。比如:网络,你就不要用了,搜出一堆重复的信息,而且广告也多。作为程序员,建议你使用谷歌搜索。

其实,你在编程中所遇到的几乎所有的问题和 bug ,别人也同样遇到过,因为不管是经验丰富的老程序员,他技术再牛逼,也是初学者过来的,也都踩过你踩的坑。所以,互联网是个好地方,里面包含了你想要的问题的答案。

你只要把报错信息往搜索引擎上一放,回车一下,很多关于这个 bug 的答案就出来很多,你只需要找到跟你一样的 bug ,就能找到答案了。

在这里必须提一下这个网站,所有的程序员有必要学会使用这个网站,其实,你编程中所遇到的问题,这个网站上几乎都是由解答的。

Stack Overflow 可以说是最好的软件程序类问答网站了,给软件开发人员工作和学习提供了非常大的便利,以至于像小白,离了 Stack Overflow 简直都不会写程序了。

所以,建议大家一定要学会使用这个网站,对你编程肯定会有非常大的帮助的。

通过上面的方法,几乎应该能够解决到你所遇到的问题,但是,实在找不到答案的话,你可以问经验比你丰富的老程序员,实在解决不了,那就换种方法吧!

网络,谷歌,debug,断点调试,业务上的bug就需要问下同事或者产品。如果能知道大致范围,哪一部分错了,就换一种方法呗,一般都不会只有一种方法。

1.reload

2.restart

3.rewrite and then goto 2 or 4

4.reboot

5.rm -rf /

6.原谅我编不下去了[捂脸][捂脸][捂脸][捂脸][捂脸][捂脸][捂脸]

找bug跟医生看病的思路是一样的,要对症下药。得先把问题的根源找到,找到根源以后问题就容易处理了。搜索引擎找不到的问题,说明这个问题不是一个常见的问题,具有独特性,那么从bug出现的路径上一步一步去排查。必要时可以用排除法,尽可能的缩小排查范围。另外,当软件的业务逻辑比较繁多复杂的时候,一个结构清晰的架构能为你节省不少找bug的时间。还有,充分的单元测试能够帮你减少出bug的机会。以上均为个人看法,欢迎讨论!

一般程序员能碰到的bug无外乎其他上游程序员写库时手抖留下些不匹配或者容易溢出的问题,搜一下差不多能解决问题。如果是自己写的,那无非就是时序错误类型错误之类的,用break point一行行的调就好了。

再复杂点的bug就是程序员拿高薪的根本了,只可意会,不可言传~

仅仅靠搜索引擎、其他网站那必然无法解决大量问题,因为很多问题是跟业务逻辑相关的,是没有直接答案的。比如 游戏 开发有个界面一直无法显示,这个问题就不是网络可以解决的。问题需要调试分析,这和破案非常像,但在开发过程中更有利的是问题有机会可以重现。破案是逆向工程,需要反推。解决代码问题不仅仅可以反推,也可以通过阅读代码正向分析。下面说说如何debug一个业务逻辑问题。回到刚刚的例子,有个界面一直出不来,我们如何快速去定位:

1.思考这个问题发生的可能性。比如 游戏 内大量界面都是正常的,那么可以对比正常界面代码和异常界面代码的区别,这是对比法。

2.假设创建正常界面和这个异常界面的逻辑代码是一样的,那么问题就落到了这两个界面内部,继续在内部重复上面的对比法进行判断,直到锁定最终位置。

上面说的方法基本上可以杜绝卡在一个简单问题上,这是摆脱新手的一个过程。选择使用对比法或者其他方法的前提都是基于观察和对项目的认识,所以,搜集“案发现场”是最关键的。

其他的问题,不属于逻辑的,像其他网友说的那样,有些通过到github、stackoverflow等地方解决的。这些问题也不是直接就去查找的,它通常也有个分析过程。比如你使用了一个库,但是目前它不支持你的模块。对于新手,就是直接网络或者google了。实际上这样的问题也是有“案发现场”的。对于作者提供的api接口的统一性和便捷程度去推断作者在相关支持模块的位置以及命名以及拓展,再尝试在文件夹中搜索。如果都找不到,再去Google上获取更多的信息。重复推断、分析,决定如何拓展或者绕过。

综合上面的几种问题,可以看到的是都离不开对现场的观察和推理分析。这种能力也被称为经验。但是一般情况下你看不到它们这个分析过程,你能做的就是在实际环境中反复逼迫自己去思考,去训练。这个推理的培养,不仅仅是对事情,也是对人。

我在入行 游戏 开发的前期,也是类似的情况。卡在不同种类的问题上,有些在简单逻辑,有些在别人的代码支持上。后面解决的问题多了,就会发现里面共通的思维方式。常用的一些方法如下:

1.对比法,比较正常与异常代码区别

2.二分查找法。分段注释找问题,也会用在很多方面。比如最近版本突然出了一个奇怪bug,可以通过svn还原来定位。这个还原不是一个一个版本还原,而是用二分法去还原。

3.增加信息。在怀疑的位置或者过程添加日志或者打断点辅助自己更好的推理。

4.相似推理。比如一个引擎在api、性能使用程度上都非常友好,那么它在别的地方也有可能相对表现比较好。这时候如果有个功能我们的实现需要很复杂才能完成,那么就有可能是我们用错了。相似推理不一定都能正确,但会提供一些帮助。

以上。

❸ 程序员格子衬衫什么梗

这个梗的由来是:作为高收入人群的程序员对格子衫有着某种偏爱,周一到周日都穿格子衫,不仅他们爱穿,他们的同事也爱穿格子衫,因此就变成了一个梗。说到格子衫,我们就会联想到程序员。

有网友是这么描述程序员的:“格子衬衫双肩包,钱多话少秃头早”。从这句话中可以看到四个标签,格子衬衫、双肩包、收入高、英年早秃。不过这可能是一个谣传,虽然在一定领域内,审美可能会达到一定程度上的统一,但是并不是所有程序员都爱穿格子衫的。

之所以这能成为一个热梗,可能是因为确实有很多程序员爱穿格子衫,这个梗火了以后,少数人的言论就压不住这个“谣传”了。

下面来分享一下,比较流行的对“程序员和对衬衫的偏爱”的解读。

  1. 格子在程序员圈是一种图腾,也是种祭祀,因为 Bug 音译为“霸格”,所以把格子穿在身上能减少 Bug 数量。

  2. 有的程序员们以为这是公司的统一着装,所以入职第一件事就是配一件格子衫。这就有点涉及到职场文化了。

  3. 格子衬衫很耐脏。不知道你有没有一个喜欢给你买深色衣服的妈妈,如果有的话,也许你能明白为啥程序员爱穿格子。因为格子和深色一样,都耐脏。

  4. 格子衫这种款式很多,适应的年龄段很广的。格子衬衫的种类其实很多的,虽然在我们外行人眼里,看着都差不多。适用年龄广这一点,也不可否认,下至三岁萌娃,上至三十五岁程序员,都可以穿。(还有一个传闻:很少有程序员能坚持到三十五岁,还干这份工作)


总结:人靠衣裳马靠鞍,说白了衣服也不过是一个“门面”。有的时候内在比外在重要多了,穿的那么光鲜亮丽干嘛?会修复bug,能敲代码不就很好了吗?当然,我不是程序员,并不能体会到他们听到网络上的热梗,内心会是怎样的感受。也许是一笑而过吧。(对,对,对,我们就是爱穿。)

❹ 程序员写程序时,有哪些减少bug的好方法

深有体会,肺腑之言:


  1. 晚上10点之后千万不要写代码,每次我这个时候写代码总会左眼睁着右眼闭上,右眼睁着左眼闭上,我表示10点之后写代码那是开玩笑。虽然有时后不是很困,然后自我感觉很良好,但是,但是,第二天自测,或者QA测试的时候那就呵呵。。。写代码5分钟,查bug俩小时。

  2. 写代码前可以自言自语,或者写在纸上。把要做的东西说一遍,理清楚了再写。

  3. 写代码千万不能着急。领导催,pm催,那也是急不来的。必须按照平时的速度,一步一步的来,心浮气躁,心神不宁的状态不能写代码。

  4. 写注释,写注释,写注释。重要的事情说三遍。代码就像天书(这点相信看过别人代码的人深有体会),而自己的代码呢,当时觉得清新易懂,过个两三天就不那么回事了。写上注释有利于后续开发的时候容易减少bug和定位bug

  5. bug有很多种,语法上的,逻辑上的等等。对于语法错误,很好解决。使用集成的开发环境,一般都会有语法检查,高亮提示等功能避免产生。然后



❺ 为什么程序员一定就是秃头这是什么梗

天天不是在找BUG 就是在修BUG ,太费脑子 了,又经常加班,是个体力+脑力的活,所以容易秃头

阅读全文

与bug很少的程序员相关的资料

热点内容
java如何将自己电脑设置成服务器 浏览:856
域名怎么制定服务器8080端口 浏览:665
服务器的主机如何使用 浏览:814
广讯通服务器地址怎么填 浏览:665
山东交管服务器繁忙云空间 浏览:52
51单片机热敏电阻坏了 浏览:547
远程电脑是云服务器吗 浏览:194
压缩包解压出来是音频 浏览:946
明源云erp服务器故障 浏览:158
安卓主页英文怎么写 浏览:844
2002服务器系统怎么设置分屏 浏览:72
什么情况空调压缩机电容坏 浏览:991
pagerank算法图解 浏览:318
部落决斗命令 浏览:404
单片机神经网络 浏览:323
加密的视频不小心删除怎么恢复 浏览:466
安卓游戏充钱充错帐号怎么办 浏览:206
有什么是绑定手机号的app 浏览:499
phpredis事务 浏览:937
阴阳师pad怎么登录安卓账号 浏览:735