软件开发中的错误

我反思最近一段时间的工作来,快有4周的时间,我在一个新的环境中着手开发了一些功能,从功能的完整性来说,不是什么全新的功能,基本上是系统现有功能的增强类型,或者小小的功能扩展。

如果说一个全面的系统,或者说是一个全面的模块,甚至一个模块中的一部份功能,都是很多人共同努力的结果,也是由一小块一小块代码组成的。

我们程序员每天工作产出的代码也是一小块,一小块的。错误的引进在软件的使用者来说,就是bug,显然bug会降低用户的信心,同时也会打击相关人员的热情,降低公司的影响力和对外的形象。所以不管站在什么角度来说,我们都会注重代码的质量,注重工作的流程,代码只是工作的成果,从因果法则来说,我们应该注重因,我们种的因是代码,那么怎么产出代码的?怎么产出bug的。

有一些是代码的问题,写的时候不够细心,一下子就敲错了,比如字段取的不匹配,我最近就犯了这个错误,这个错误通过测试可以发现,但是测试也可能不能发现,只是刚好数据匹配上了错误的情况。测试算是一种检验。这种不够细心,敲错的情况时有发生,人总是会犯错,就像铅笔的那头就是橡皮。

今天查询的时候就忘了带条件,但是由于数据的原因这个错误巧合地隐藏起来了,测试反应的结果并不能证明程序没有错误,测试如果发现了错误可以证明程序有问题,但没有发现错误可能需要更多的努力。

在处理字符串转数字的时候,如果把toPlainString()换成toString()就可能出现科学计数法表示的数字。

BigDecimal.valueOf(Double.parseDouble(value)).stripTrailingZeros().toPlainString()

像这种错误属于基本功不够扎实,记忆不够牢靠导致的。

我一直相信有些错误是可以避免的,好的编程习惯就可以实现。上面的错误不是习惯的问题,但是测试是可以立马反馈的,所以说对于不确定的地方 编写测试是一个好的习惯。但是没有写测试,是过于自信?

我想对于写测试这件事,如果是测试驱动开发,天然的环境是有利的,所以辨别是否不确定性是一个编程功底,而不是盲目地自信和放任天性中的偷懒行为。