01hr开发软件不等于编码 写程序时会有编码测试调试的习惯。很不幸,这是开发软件的错误方法。专业的程序员会使用策略来预防、检测及消除软件bug。编码不是在开发软件。编码的意思是在文本编辑器中输入语句。编码只是开发软件的小部分。开发软件需要编程前、编程中、编程后的许多步骤。下面分着讲解。 02hr编程前 1、了解需求。 2、考虑可能的输入和期望的输出。 3、识别出有效但非期望的输入和正确的输出。这是对于开发可靠的软件而言是一个关键点。 4、识别出无效输入并找到检测它们的方法。要注意即使输入无效的数据时,程序也不能奔溃。 5、想出解决办法,并记录。 6、设计程序,可以节省大量的时间。 03hr编程中 1、若想正确且更快的完成程序,就写更多的代码。为了满足一个要求而把代码放到一个更大的程序之前,写一个小程序来测试你的解决方案。即单元测试。 2、使用自动缩进的文本编辑器可以帮你检查代码是否对齐,可以节省宝贵的时间。 3、在运行之前一行一行的读代码。可以帮你找到通过测试很难发现的问题。 4、自己想一些测试例子。若自己不知道自己写的代码,则计算机也不知道。 5、尽量使用函数来重构代码,避免复制代码。 6、要用版本控制系统(这不是废话吗)。 7、编译时,警告信息也不要放过。 04hr编程后 不要依赖测试,测试只会告诉你程序没有正常工作,不会告诉你程序真的在正常运行。很可能测试用例没有涵盖所有可能的方案。通过测试用例涵盖所有可能的方案是很困难的。 05hr常见错误 未初始化变量:一些人认为所有的变量都会自动初始化为0,C语言中不会初始化。通过测试很难测试出来。 错误数据类型:需要理解并正确地使用类型,编程语言的趋势是让数据类型更有限制性,防止犯意外的错误。 06hr后执行式和交互式调试 调试一个程序分为几个阶段,举个列子: 1、从一个文件中读取一些整数; 2、把整数排序; 3、把排好序的整数存到另一个文件中; 单元测试:在上面三部整合之前测试每一部分叫作单元测试。 对于单元测试,经常需要写一些额外的代码,作为单独部分的驱动。调试可能是交互式或后执行式的。若程序会花费几个小时,你就不会想要用交互式来调试这个程序了。相反,你会想要程序打印出调试信息,即日志。 对交互式调试而言打印调试信息存在多个问题: 1、需要插入代码来打印调试信息。多数情况下,调试信息必须在随后被移除,因为此信息不应该出现在最终的代码和它的输出中。 2、如果有很少的信息,那么就会缺少足够的信息帮助你判断哪里错了。 3、如果信息太多,可以忽略不相关的信息,获得好信息是很困难的。 4、最糟糕的是,问题可能会出现在意想不到的地方,而那里却并未插入调试信息。结果就是添加越来越多的调试信息。这是很耗时的。 07hr生产代码与测试代码分离 自己应该能检测出自身bug的程序。编写程序之前就应该考虑编写测试代码。这是普遍的做法,这个称为测试驱动的开发。开发的时候需要将测试代码和开发代码分开,这样可以随意删除测试代码。