📅  最后修改于: 2020-12-14 06:47:42             🧑  作者: Mango
识别和消除程序或软件中的错误称为调试。理想情况下,调试是测试过程的一部分,但实际上,它是在编程的每个步骤中完成的。编码人员应在继续进行调试之前,调试最小的模块。这减少了在测试阶段抛出的错误数量,并显着减少了测试时间和工作量。让我们看看程序中可能出现的错误类型。
语法错误是程序中的语法错误。每种语言都有自己的一套规则,例如创建标识符,编写表达式等来编写程序。违反这些规则时,这些错误称为语法错误。在键入程序时,许多现代的集成开发环境都可以识别语法错误。否则,它将在您编译程序时显示。让我们举个例子-
在此程序中,尚未声明变量prod,该变量由编译器抛出。
语义错误也称为逻辑错误。该语句没有语法错误,因此可以正确编译并运行。但是,由于逻辑不正确,因此无法提供所需的输出。让我们举个例子。
看一下第13行。在这里,程序员想检查除数是否为0,以避免被0除。但是,不是使用运算符==,而是使用了赋值运算符=。现在,每次“ if表达式”的计算结果为true时,程序将输出为“您不能除以0”。绝对不是想要的!!
任何程序都无法检测到逻辑错误;当没有达到所需的输出时,程序员必须自己识别它们。
运行时错误是在执行程序时发生的错误。这意味着该程序没有语法错误。您的程序可能会遇到的一些最常见的运行时错误是-
修改代码以提高其质量和效率的任何方法都称为代码优化。代码质量决定了代码的寿命。如果该代码可以长时间使用和维护,并且可以从产品转移到另一个产品,则可以认为它的质量很高,并且使用寿命更长。相反,如果一段代码只能在短时间内使用和维护,例如直到某个版本有效,则认为该代码质量低且寿命短。
代码的可靠性和速度决定了代码的效率。代码效率是确保软件高性能的重要因素。
代码优化有两种方法-
基于直觉的优化(IBO) -在这里,程序员尝试根据自己的技能和经验来优化程序。这可能适用于小型程序,但随着程序复杂性的增加而失败。
基于证据的优化(EBO) -此处使用自动化工具来找出性能瓶颈,然后对相关部分进行相应的优化。每种编程语言都有自己的一套代码优化工具。例如,PMD,FindBug和Clover用于优化Java代码。
由于时间紧缺且内存昂贵,因此代码针对执行时间和内存消耗进行了优化。两者之间必须保持平衡。如果时间优化增加了内存负载,或者内存优化使代码变慢,那么优化的目的将会丢失。
要为用户提供快速服务,必须优化执行时间的代码。这是一些执行时间优化的技巧-
使用具有内置执行时间优化的命令
使用开关代替if条件
最小化循环结构内的函数调用
优化程序中使用的数据结构
如您所知,数据和指令消耗内存。当我们说数据时,它也指作为表达式结果的临时数据。我们还需要跟踪组成我们要优化的程序或模块的指令数量。这是一些内存优化的技巧-
使用具有内置内存优化功能的命令
尽量减少需要存储在寄存器中的变量的使用
避免在多次执行的循环中声明全局变量
避免使用占用大量CPU资源的函数,例如sqrt()