zoukankan      html  css  js  c++  java
  • 程序员如何让自己的程序少出BUG [工作]

    工作两年多,从刚开始什么都不懂,到慢慢发现知识的重要,特别是知识积累的重要,所以从去年开始,才懂得积累知识,并且开始记录,记录遇到的问题、如何解决以及一些瞬间的想法,还将每个工作经历都贴在我的工作桌上。程序员是善于思考的一个职业,做过这行的都知道,写一个程序的过程都要经过构思、设计、写代码、测试到最后运行这几个步骤。慢慢地,这个习惯也被搬到了生活中,现在我才觉得,我平时做事这么的冷静善思考原来是工作影响的原因。

     

    象我一样,大多程序员都有一个毛病,或者说一个习惯,自己编写过的代码都不愿意测试,他们凭着自己的习惯,理论上完成了代码的编写就认为自己的工作结束了,剩下的工作应该交给测试人员了。但实际上来讲,如果代码存在BUG,造成软件在运行期出错,那么测试人员和客户肯定会发现这些BUG的,再等到测试人员或者客户把BUG反馈回来的时候代价就已经很大了,不仅仅是时间的浪费,更重要的还有1、影响了客户对产品以及公司的信任度,2、影响了程序员自己的声誉,3、影响了代码的可读性以及质量,4、增加 了DEBUG的难度,5、对程序员的心理造成一定的影响。

    拿我自己来说,反复的DEBUG,对自己的自信心确实造成不小的影响,浪费了大把的时间影响了其他项目的开发不说,即使写了大量的代码,公司同事还有客户对自己的信任度也大大降低。所以程序员应该尽量减少自己程序的BUG,那如何控制BUG呢?

    首先,程序员应该克服自己身上的一些缺点,这是很重要的一点,因为每个程序员都有自己的编程习惯,而且每个程序员对自己刚刚完成的程序都会信心百倍的说“绝对没问题”,实际上这种想法很正常,因为每段代码都是通过程序员认真谨慎的思考和设计之后才写出来的,在设计时已经排除了很多问题,所以程序员不会将自己认为不正确的判断写到程序里,但这仅仅是理论上的想法,但人哪有不反错的时候。其实程序员在读其他人写的程序的时候,就会很谨慎,仔细找到程序上的错误,但对自己的代码就很难这样做,如果把这种谨慎应用到自己的代码上来,BUG会减少到最少。软件工程所说的各阶段工作想必大家都清楚,前期的设计以及需求分析才是一个软件工程的重点,这里也是花费时间最多的地方,当对要写的程序有了一个清晰的轮廓之后再动手编写代码。

    第二,刚刚提到的前期设计,是指在编写代码之前所作的工作,这要求程序员对系统的整个结构以及逻辑有很清楚的理解,这也要求对系统的需求做到位。我没有写过文档,所以这里不谈文档了。思路清晰很重要,但每个人并不能将系统的整个设计思路都记在脑袋里,那最好就写下来,特别是一些复杂的逻辑结构关系还有复杂的算法。

    第三,代码的编写,要尽量减少拼写的错误,严禁使用关键字作为变量来使用,要尽量做到代码模块化,并且保证其正确性和可重复使用性。因为是模块组成的,写过之后可以将每个模块部分单独测试,因为代码量少了质量自然提高了。对顺序执行要求很高的函数尽量不采用调用子函数的方法,让程序按顺序走吧。

    第四:代码检查以及系统功能测试,这是保证代码质量的最后一步了,我们可以写一些代码模块或者小工具来进行测试工作,跟踪变量值的变化,使用一些小技巧在这个阶段都是必要的,这里和测试人员的测试不同之处在于:仍然让程序员的注意力放在其自己的代码范围内,减小了排错的难度。

    按照如上步骤来走的话,那么我想你的系统应该足够健壮了。

    把对待别人代码的态度放到自己的代码上来,也就是反复的Review自己的代码检查逻辑错误也是相当好的办法。别把自己辛苦写的代码看的很值钱,在团队中尽量与别人分享、Review代码这是实际工作的经验。

    作为一个优秀的程序员要具备这些习惯,看自己的代码就象对待自己的一样,爱惜、呵护是必须的,同时也要象园丁一样及时修剪多于的树枝来让自己的代码走正确的道路。

  • 相关阅读:
    POJ 3710 Christmas Game#经典图SG博弈
    POJ 2599 A funny game#树形SG(DFS实现)
    POJ 2425 A Chess Game#树形SG
    LeetCode Array Easy 122. Best Time to Buy and Sell Stock II
    LeetCode Array Easy121. Best Time to Buy and Sell Stock
    LeetCode Array Easy 119. Pascal's Triangle II
    LeetCode Array Easy 118. Pascal's Triangle
    LeetCode Array Easy 88. Merge Sorted Array
    ASP.NET MVC 学习笔记之 MVC + EF中的EO DTO ViewModel
    ASP.NET MVC 学习笔记之面向切面编程与过滤器
  • 原文地址:https://www.cnblogs.com/starm/p/1355800.html
Copyright © 2011-2022 走看看