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