编程方法——调试


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

语法错误

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

语法错误

在此程序中,变量 prod 尚未声明,这是编译器抛出的。

语义错误

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

语义错误

看第13行。这里程序员想要检查除数是否为0,以避免被0除。但是,没有使用比较运算符==,而是使用了赋值运算符=。现在,每次“if 表达式”的计算结果为 true,程序都会给出输出“你不能除以 0”。绝对不是我们想要的!!

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

运行时错误

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

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

代码优化

任何修改代码以提高其质量和效率的方法都称为代码优化。代码质量决定代码的寿命。如果代码可以长期使用和维护,并在产品之间延续,那么它的质量就被认为是高的,并且具有更长的寿命。相反,如果一段代码只能在很短的时间内使用和维护,比如直到一个版本有效,那么它就被认为是低质量的,并且寿命很短。

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

代码优化有两种方法 -

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

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

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

交换两个变量

执行时间优化

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

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

  • 使用 switch 代替 if 条件

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

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

内存优化

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

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

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

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

  • 避免使用 sqrt() 等 CPU 密集型函数