boluobenbo 发表于 2023-6-29 17:33:23

歌者文明清理员 发表于 2023-6-29 17:38:04

本帖最后由 歌者文明清理员 于 2023-6-29 17:40 编辑

在这个上下文中,函数桩(function stub)是指一个占位符函数,用于暂时替代尚未实现的具体函数。函数桩提供了函数头和一个模拟函数功能的实现,以便可以编写和测试主程序。函数桩的目的是使整个程序能够在尚未实现特定函数的情况下运行和测试。

在你提到的例子中,mainscript.m 是函数桩,它调用了三个尚未实现的函数:getvals、calcz 和 printall。这些函数桩只提供了函数头和一个简单的模拟实现,而不是实际的功能代码。例如,getvals.m 函数桩只返回了固定的值(x=33, y=11),而不是从用户输入获取值。

通过使用函数桩,你可以先编写并调试一个函数,并确保它能够在程序中正确运行。这种方法相对于一次性编写所有函数来说更容易调试,因为当出现错误时,你可以逐个检查每个函数的实现,而不必同时考虑所有函数的问题。

函数桩的优点在于它允许分阶段地开发和测试程序,减少了调试过程中的复杂性。当你开发一个较大的程序时,有时很难同时处理多个函数的问题。使用函数桩,你可以先关注其中一个函数的实现和测试,确保它正常工作,然后再逐渐完成其他函数的开发。

总之,函数桩是一种暂时代替尚未实现函数的方法,用于使整个程序能够在尚未完全开发完成的情况下进行测试和调试。

sfqxx 发表于 2023-6-29 17:54:37

根据您提供的信息,函数桩(Function Stub)是一种常用的调试技术,在一个脚本主程序中调用多个函数时使用。函数桩可以作为占位符,即使特定的函数尚未完全编写,整个脚本仍然可以正常工作。

在给出的示例中,"mainscript.m"被称为函数桩。它包含了三个尚未编写的函数:"getvals", "calcz"和"printall"。虽然这些函数实际上没有实现,但函数桩为这三个函数预留了位置。函数桩包含了合适的函数头(声明),以及对这些函数功能的模拟,例如设置任意的值作为输出参数。

使用函数桩的好处是可以逐个编写和调试各个函数,而不需要同时完成所有函数的编写。相比同时编写所有函数,在出错时更容易找到问题所在,因为你只需要关注当前正在编写和调试的函数。当某个函数完全编写并通过测试后,再进行下一个函数的编写。

关于"这样即使特定的函数还没有写好脚本也可以工作"的说法,您的观点是正确的。如果任何一个字函数没有写好,执行`mainscript.m`时将会报错。或许描述存在一定的误导,建议阅读原书文本进行更深入的理解。

总而言之,函数桩是一种调试技术,可以在主程序中预留函数位置并进行逐个编写和调试。它的好处是可以逐个处理函数,更容易找到出错原因,提高程序开发效率。

boluobenbo 发表于 2023-6-29 18:08:39

sfqxx 发表于 2023-6-29 18:43:35

boluobenbo 发表于 2023-6-29 18:08
谢谢回复。
“使用函数桩的好处是可以逐个编写和调试各个函数,而不需要同时完成所有函数的编写。相比同 ...

使用函数桩并不是唯一的方式来逐个编写和调试各个函数,只是其中一种常用的方法之一。如果您没有使用函数桩,仍然可以逐个打开并调试getvals、calcz和printall这三个函数。

当我说“因为你只需要关注当前正在编写和调试的函数”时,我指的是在没有使用函数桩的情况下,您可以逐个打开和调试getvals、calcz和printall这三个函数。在这种情况下,您可以单独调试每个函数,而不需要同时完成所有函数的编写。

使用函数桩的好处是它可以作为占位符,使得整个脚本在某些函数尚未完成时仍然能够正常工作。这样,在测试过程中,您可以先关注主程序的其他部分,并使用函数桩模拟尚未完成的函数的功能。当实际函数尚未完全编写时,避免了由于缺少某些函数而导致整个脚本无法运行的问题。

综上所述,您可以根据自己的喜好选择是否使用函数桩来逐个编写和调试各个函数。无论您选择哪种方式,都可以单独打开和调试getvals、calcz和printall这三个函数,以便更容易找到问题所在。
页: [1]
查看完整版本: 什么是函数桩? (有关debug的方法问题)