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