📜  编程方法-调试

📅  最后修改于: 2020-12-14 06:47:42             🧑  作者: Mango


识别和消除程序或软件中的错误称为调试。理想情况下,调试是测试过程的一部分,但实际上,它是在编程的每个步骤中完成的。编码人员应在继续进行调试之前,调试最小的模块。这减少了在测试阶段抛出的错误数量,并显着减少了测试时间和工作量。让我们看看程序中可能出现的错误类型。

语法错误

语法错误是程序中的语法错误。每种语言都有自己的一套规则,例如创建标识符,编写表达式等来编写程序。违反这些规则时,这些错误称为语法错误。在键入程序时,许多现代的集成开发环境都可以识别语法错误。否则,它将在您编译程序时显示。让我们举个例子-

语法错误

在此程序中,尚未声明变量prod,该变量由编译器抛出。

语义错误

语义错误也称为逻辑错误。该语句没有语法错误,因此可以正确编译并运行。但是,由于逻辑不正确,因此无法提供所需的输出。让我们举个例子。

语义错误

看一下第13行。在这里,程序员想检查除数是否为0,以避免被0除。但是,不是使用运算符==,而是使用了赋值运算符=。现在,每次“ if表达式”的计算结果为true时,程序将输出为“您不能除以0”。绝对不是想要的!!

任何程序都无法检测到逻辑错误;当没有达到所需的输出时,程序员必须自己识别它们。

运行时错误

运行时错误是在执行程序时发生的错误。这意味着该程序没有语法错误。您的程序可能会遇到的一些最常见的运行时错误是-

  • 无限循环
  • 除以’0′
  • 用户输入的值有误(例如,字符串而不是整数)

代码优化

修改代码以提高其质量和效率的任何方法都称为代码优化。代码质量决定了代码的寿命。如果该代码可以长时间使用和维护,并且可以从产品转移到另一个产品,则可以认为它的质量很高,并且使用寿命更长。相反,如果一段代码只能在短时间内使用和维护,例如直到某个版本有效,则认为该代码质量低且寿命短。

代码的可靠性和速度决定了代码的效率。代码效率是确保软件高性能的重要因素。

代码优化有两种方法-

  • 基于直觉的优化(IBO) -在这里,程序员尝试根据自己的技能和经验来优化程序。这可能适用于小型程序,但随着程序复杂性的增加而失败。

  • 基于证据的优化(EBO) -此处使用自动化工具来找出性能瓶颈,然后对相关部分进行相应的优化。每种编程语言都有自己的一套代码优化工具。例如,PMD,FindBug和Clover用于优化Java代码。

由于时间紧缺且内存昂贵,因此代码针对执行时间和内存消耗进行了优化。两者之间必须保持平衡。如果时间优化增加了内存负载,或者内存优化使代码变慢,那么优化的目的将会丢失。

交换两个变量

执行时间优化

要为用户提供快速服务,必须优化执行时间的代码。这是一些执行时间优化的技巧-

  • 使用具有内置执行时间优化的命令

  • 使用开关代替if条件

  • 最小化循环结构内的函数调用

  • 优化程序中使用的数据结构

记忆体最佳化

如您所知,数据和指令消耗内存。当我们说数据时,它也指作为表达式结果的临时数据。我们还需要跟踪组成我们要优化的程序或模块的指令数量。这是一些内存优化的技巧-

  • 使用具有内置内存优化功能的命令

  • 尽量减少需要存储在寄存器中的变量的使用

  • 避免在多次执行的循环中声明全局变量

  • 避免使用占用大量CPU资源的函数,例如sqrt()