导航:首页 > 程序命令 > 如何减少程序员开发中的bug

如何减少程序员开发中的bug

发布时间:2022-05-25 12:48:30

⑴ chengxum.c:error c131:t'plicate function-parameter什么意思

程序 m.c:错误C131:T重复的函数参数。

程序错误,即英文的Bug,也称为缺陷、臭虫,是指在软件运行中因为程序本身有错误而造成的功能不正常、死机、数据丢失、非正常中断等现象。

早期的计算机由于体积非常庞大,有些小虫子可能会钻入机器内部,造成计算机工作失灵。史上的第一只 "Bug" ,真的是因为一只飞蛾意外走入一电脑而引致故障,因此Bug从原意为臭虫引申为程序错误。

一些有趣的Bug有时也会成为一种乐趣。在电脑游戏中,一些Bug,假如不令游戏出现大错误的话,经常会变成一种玩游戏时的秘技。

程序错误由来:

从电脑诞生之日起,就有了电脑BUG。第一个有记载的bug是美国海军的编程员,编译器的发明者格蕾斯·哈珀(GraceHopper)发现的。哈珀后来成了美国海军的一个将军,领导了着名计算机语言Cobol的开发。

1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。

第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。

突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用镊子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”

从此以后,人们将计算机错误戏称为臭虫(bug),而把找寻错误的工作称为捕杀虫子(debug)。

程序中隐藏的功能缺陷或错误。由于现在的软件复杂程度早已超出了一般人能控制的范围,如Win95、Win98这样的较成熟的操作系统也会不定期地公布其中的Bug。如何减少以至消灭程序中的Bug,一直是程序员所极为重视的课题。

⑵ 程序员怎么避免写出bug

程序猿写出bug是一件很正常的事情,重要的是自测,能减少bug.

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

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

⑷ 优秀的程序员是如何处理技术 Bug 的

从初入职场菜鸟到职场大咖,很多程序员在努力充实自己,有时候我们需要对自己进行一次能力定位,了解自己的优势和没有掌握的技术。芯学苑列出几点作为初入职场的新手评估自己,明了前进学习的方向。
1、技术能力(解决问题的能力)
这是非常重要的事;过硬的技术能让你得到面试机会,并在工作中游刃有余。当公司招聘一个java开发人员时,是会优先考虑能力因素的。在实际的项目开发中,一个程序员的技术能力等于其解决问题的能力。
如果拿一个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的数量和难度来衡量。一个程序员能基本无误的完成项目中的一个功能算是合格,但在此之前,他对项目的生产力为负,为他布置的任务,中间环节的沟通,修补bug的时间其实要多于自己直接完成该功能的时间的。能较好完成一个完整模块的程序员才算是较好的程序员,也是项目中的主要开发者。能独立完成整个项目才是优秀的程序员。
2、专业基础(知识的积累)
一个程序员的知识积累很大程度上决定了其解决问题的能力。知道如何编写代码是基本的技能,但是知道Java编程语言的原理,知道代码背后的算法将使你从人群中脱颖而出。
3、主流编程工具
今天,事实是,你不能成为一个样样都懂的人(杂而不精)。你必须选择你要掌握的工具。有时这是由工作的环境决定的,但是按照下面说的去做也是一个很好的选择:
构建工具:Maven或Gradle。
SCM:Git(不是GitHub。大不相同)。
构建自动化:Jenkins。
IDE:Netbeans或Eclipse——不仅用于编写代码,而且还从IDE中重构和调试代码。我遇到了很多没有如何从他们最喜欢的IDE调试的开发人员。
Bug跟踪:Bugzilla或Jira。
4、JSF的知识
应用程序服务器
所有Java开发人员应该知道如何在Apache Tomcat中部署。
当Glassfish开发停止时,下一个最好的事情是J Boss Wild Fly。
5、沟通的能力
沟通是我们做好一切事情的关键。我们必须与我们周围的环境保持互动,无论是在我们的私人还是职业生活中。一个良好的程序员知道如何在各种团体面表达自己。也许对你来说显而易见的东西在他人的角度来看并非如此。
从大的尺度(比如一个人的工作生涯)来看,一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣。
在一个分工明确的项目中,程序员需要理解产品,和领导沟通理解自己的任务,和同事们沟通以正确的方式进行合作。无论哪一个方面沟通出了问题都不是小事情,同时,程序员还需要正确的传达设计的实现难度,以及让别人正确的理解自己设计模块的接口。在不写文档时,正确的口头沟通非常重要,需要写文档时,良好的编辑能力也算做是沟通能力的一部分。
6、自学能力
这是一个非常重要的技能,在你自己的空闲时间学习新的技能。不要等待公司为你提供培训。你需要自己去学习新技术,提升自己在相关领域的水平。从Java后端开发到架构模式,总是有一些新事物值得学习。经常阅读博客和论坛,尝试加入本地聚会小组。你学到的东西可以帮助你的事业。知识刷新频率极快让人无法追赶的这个时代,难免会有超出自己知识范围的时候,此时你的自学能力决定了你能多快的完成任务。
7、良好的团队合作精神
无论是部分编程还是大型项目,所有开发人员都是作为团队的一部分在协同工作。你需要致力于团队的目的,或帮助新的团队成员克服障碍。不要存在这种“我只要做好我的本职工作,下班就直接回家”的态度。成为团队的一部分,帮助周围的同事,对自己的能力也是不小的提升。
就像拿破仑说的不想当元帅的士兵不是好士兵,追求参与一个大型软件系统的开发,是每个程序员的梦想。在此之前,应该学习更多的专业知识,达到优秀程序师的标准。最后希望各位程序员阅读本文后能够得到一些裨益,在这条路上走得更好。

⑸ Java程序员如何在编码中减少bug存在

BUG不可避免,再好的程序员也有写BUG的可能。
多读一下别人的代码,多思考一下你的业务场景,把所有的可能列一下
另外,对产品以及业务的熟悉程度,也决定了你可能会写出BUG的大小。
一个不熟悉产品的测试,不是一个好程序员

⑹ 资深程序员可以避免敲代码时出现bug吗

程序员遇到bug是在正常不过的事情了,就算非常资深的程序员也无可避免bug的存在,一般来说,除非你写一辈子 Hello World。
不过世界上的确存在一些凤毛麟角天才的程序员,他们差不多能做到这一点。接到任务之后,思考,冥想,在笔记本上画出数据结构或某个算法片段,腹稿打的差不多了就开 始编程,用 Vim、Emacs 或 IDE 工具,大部分时候能够一气呵成,然后构建代码,构造测试数据,运行程序,在反复调试中修复几个编程过程中没有考虑到的问题,就可以提交到代码库了。
他们的 代码交给测试和其他开发者,少有人能挑出 bug,因为他们对代码有敏锐的感觉,能够在别人忽略的地方发现代码的坏味道,并给出巧妙而优雅的解决方案。
他们是天生的代码创造者,这样的人往往效率高 而且少有错误,以至于会被一些平庸的团队忽略,因为技术领导总是会下意识的去关注那些最容易出事的环节,但这些人才是团队真正的脊梁,不是那些四处救火者。

⑺ 评“程序员怎么样才能保证自己的程序没有BUG”

复核代码的目的有:
* 检查代码是否规范,如命名规范,注释
* 保证一段代码至少有两人共同熟悉,可以由任一人来更改。
* 审察未文档化的细节设计,即由代码直接表达的设计,由代码人口述设计并对照代码
我认为程序员永远都不会有100%的自信。
即使程序已经发布,被用户接受很长时间,只有好评没有抱怨,依旧不能确认有没有错误。
只能假定错误是永恒的,它们一直在那里,只是不到条件爆发。
一个程序员能做的就是,排除所有肤浅的错误,加大隐藏错误出现的几率并找到它们,
采用一些容错性代码减小可能的错误,减少程序发布后爆发的机率。
测试的目的是为了发现错误,
没有100%覆盖的测试。就是说,总是有一些状态是测试不到的。
代码人员认为不可避免地存在错误,需要测试,测试人员认为测试覆盖度不可能100%,还是要代码小心。
这是一个头痛的问题,结果是没有完美的程序。
单元测试是白箱测试,可以根据代码实现将注意力放到最关键的部位。
但仍然不是100%覆盖的。
单元测试一般针对的是边界数据,不要求覆盖度,而更要求有效性。
其目的更主要的是保证代码更改不会破坏原有的正确性,是提供保障而不是查找故障。
保证没有错误的唯一方法是不写代码,减少错误的最好方法是少写代码。
简单的设计和实现是减少错误的最佳方法。简单的代码错误必定少。
画蛇添足式的功能则是最大的错误发源地。

⑻ 程序员怎么样保证自己的程序没有BUG

程序员是善于思考问题的一族。一个程序的编写都是通过:思考、设计、编写、调试、测试以及运行这些基本的阶段。 但大部分程序员都有一个问题就是不太愿意测试自己的代码。他们草草的调式完成以后就认为工作结束,测试那是测试人员的工作。 1. 影响了程序员自己的声誉 2. 影响了产品的质量 3. 影响了客户的信任度 4. 这个时候再 DEBUG 难度增大了许多。 大的不说,就说多自己声誉的影响吧。如果你的程序总会有这样那样的 BUG ,你得到收益会减少,即使你写了很多代码。 程序员必须克服一些自身的致命缺点才能够从根本上解决这个问题。那么这个问题是什么?前面我们已经提到,程序员对自己的代码都非常宽容,认为那是正确的没有问题。实际上这种想法比较正常,程序是通过程序员思考和设计之后才写出来,程序员不会将自己认为不正确的东西写到代码里,而到这个时候都一直假设程序是正确的;但人非圣贤,怎么可能不犯错误来。实际上程序员在对待其他程序员时候的态度就很好,带着一种挑剔和学习的态度;但一旦对待自己的代码就很难这么做;这就是最致命的。程序员也必须对自己的代码带着挑剔和学习的态度;这个基础是假设自己的代码是错误的,然后需要做的是怎么样证明自己的代码是正确的。程序员自身可以在程序生成的每个阶段做这些工作:仔细的设计(这个时候画点时间是值得的,必须保证我们对自己的程序有清晰的轮廓后才能开始动手写)、编写代码时、单元测试(单元测试的重要性就不在赘婿了)、功能测试。 仔细的设计:这个的仔细是说在程序员编写代码之前,其必须对代码的整个结构以及逻辑结构有明确的清晰的了解,只有这个时候才可以去写代码。这里没有谈到文档,但我说到了一定要清晰的思路,但清晰的思路不是每个人都可以在脑袋中直接形成的,很多人都是普通人,没有办法在脑袋瓜中把所有问题都想清楚,那么就记下来,特别对于复杂的逻辑。 编写代码:对于没有把握的代码,例如:新设计的算法,最好保证其正确性。可以单独将这部分测试,这可以让代码模块化的同时又保证了代码的正确性。一句话:少量的代码保证质量还是比较简单的。 单元测试:单元测试的重要性不在赘叙了,现在也有许多工具可以帮助程序员并减少工作量。 功能测试:程序员保证自己代码质量的最后一关;为了做这样的工作我们可能必须写一些代码来测试,甚至是测试工作。使用大量的 CASE 来测试,以及错误的 CASE 。这里和测试人员的测试不同之处在于:仍然让程序员的注意力放在其自己的代码范围内,减小了排错的难度。 如果你通过了以上的步骤都找不出你程序中有任何问题的话,那么我想你的程序应该足够健壮了。其实还有一点必须说明的就是:代码 REVIEW 。 前面说道了程序员对待别人代码的态度是挑剔和学习的态度,所以让其他程序员来 REVIEW 你的代码也是检查程序有没有逻辑错误的很好的办法。团队中应该交叉 REVIEW 代码,这是实践的经验。 作为一个好的程序员必须有以上的习惯,以及对待自己代码象孩子一样,我们要爱惜我们的代码,同时也要让代码走正确的路。

php程序员写的代码为什么总有bug

弱类型以及即编即译等等灵活的特性,注定PHP必须要有牺牲一定的稳定性的前提来达到。换句话说,通常JAVA中一些BUG可以通过编译机制可以尽早的扼杀早摇篮之中,即使是运行期的错误,也可以通过编译机制找到。同时,强类型语言的严谨的代码编写风格,也不容易出现由弱类型语言中那些让人又爱又恨的类型自动转换发生的意想不到的行为。

最终,我可以认为PHP为了快速开发,做出了他应有的牺牲。把更多的代码控制权力交给程序员,而不是交给机器,这也意味着代码的有效性考验着作为程序员本身的编程能力。更可能是程序员本身对编程思想的理解程度。不过,PHP大多数都是用来开发web站点,而且还有很庞大的社区,以及许多优秀的框架,这些都可以帮助PHP程序员在开发中减少不必要的麻烦。

BUG不可避免,BUG与否决定在你!

个人经验,少年,你如果要开发应用的话,这个年代不用框架,就等于自己为自己增加N倍的难度。在下推荐几款框架给你吧:
LARAVAL (强力推荐),YII,codeigniter.......

⑽ 面试中被问到你遇到的java编程中的bug你如何解决的

首先,要认识 bug。
如果一个程序做了它不应该做的事,或者没有做它应该做的事,那就是 bug。bug 很难避免,尤其在规模化的编程过程中。
我们知道从面向过程的角度来说,一个程序是由数据结构和算法构成的,从面向对象的角度来说,程序可以是由类和对象组成的。因此 bug 我这里分成两类:

在一个 Java 程序中,类和对象的关系可能会造成 bug。这是设计时的问题,例如多实例的同步问题、线程冲突和死锁问题,这是常见的两个潜在的 bug。要尽量避免这类 bug,只能在设计时下功夫。思路一定要清晰,一定要清楚每个类要做些什么,什么时候该做些什么。这类 bug 比较容易发现,但是不易修补,因为牵扯到程序的不同部分,有时候相当麻烦,因此最好一开始就不要让它出现。

然后一些细节上的 bug,属于逻辑漏洞,可能是算法上的漏洞。Java 其实这方面要比 C/C++ 安全,因为后者的某些漏洞是致命的,例如内存泄露、指针冲突、野指针等一系列问题,可能直接导致程序崩溃,但是 Java 绝对不会出现指针问题,内存相对安全。但是 Java 也可能导致内存不断消耗,最终崩溃的情况也是有的。这个问题我也碰到过几次了,如何解决?需要你对你大量使用的类非常熟悉,最好事先仔细看看文档,有的类需要你最后 dispose 的,有的类 add 过后需要 remove 的,有的类的某些方法会间接地创造一些对象。这种 bug 不大容易发现,尤其是我们有时候对 JVM 的绝对信任而忽略了这些细节,甚至造成了不好的习惯。要么不碍事,要么很严重,一但出现问题可能会发现同样的问题几乎出现在所有的地方。所以避免这类 bug 只有谨慎,并且要养长良好的习惯。
顺便说一句,Java 内存溢出后程序就直接退出,可能会导致数据丢失之类的,这个责任担当不起的。
然后逻辑漏洞还没讲完,还有一些和内存无关,但是也是逻辑上的疏忽造成的,例如数组越界、空栈、格式不兼容等等。这些相当难发现,有时候是正常的,有时候就报错了。这个可以说是最普遍的漏洞,也是最难发现的漏洞。这类漏洞要看程序员的水平,经验丰富、思维清晰、反应敏捷、习惯良好的程序员会好一点,但是不是所有的程序员都是这样的,再说人无完人,再怎么水平高也难免犯点小错嘛。这种漏洞基本都是在后期测试(传说中的内测)和已发布的测试版中逐渐被发现。为了尽量早发现,内部的测试要做的好,不过首先负责各个部分的程序员之间要定下默契,程序要符合规范,类和方法尽量简单化,不要一个方法出现 4 个以上的参数,因为那样会巨大的增加测试的麻烦。要写好注释,变量名写完整,等等规范就不一一列举了。然后对测试人员的要求也是比较高的,测试人员必须熟练掌握测试技巧,有的团队这些小 bug 的修复也是测试人员做的,那测试人员也要良好掌握调试技巧,团队内人员要保持良好的沟通。

阅读全文

与如何减少程序员开发中的bug相关的资料

热点内容
androidimageview保存 浏览:387
新买店铺什么服务器 浏览:883
文件夹能直接刻录吗 浏览:493
androidxmpp删除好友 浏览:969
javac哪个前景好 浏览:426
中华英才网app为什么不能搜索了 浏览:660
服务器域名是什么意思 浏览:52
Linux导出mysql命令 浏览:159
无诈建邺是什么app 浏览:228
python中的双色球 浏览:166
python解释器里如何换行 浏览:410
python编写格式 浏览:574
用python做出来的软件 浏览:469
服务器指示灯代表什么 浏览:702
做一个单片机销售需要知识 浏览:777
怎样去连接加密wifi 浏览:682
有什么app自带拍摄模板的 浏览:435
登录相亲网为什么要下载app呢 浏览:545
加密货币和主权货币撮合 浏览:683
哪里能学app 浏览:445