声明一次全局变量还是多次局部变量?
Declare variable one time global or several times local?
我目前正在考虑什么更好。
我有一些经常被调用的函数,这些函数使用这些函数正在使用的变量,我在想是否应该在 class 中将它们声明一次为全局变量,这样我就可以始终在函数中重用它们。或者在方法中声明它们,因此每次执行函数时。
如何专业地做到这一点?
答案是,这取决于。如果您在一个地方设置这些变量并且只在相关函数中读取它们的值,那么将它们设为全局变量是有意义的,但是如果您打算在这些函数中修改它们,那么如果您将它们设为全局变量,您的函数将不会产生预期的结果。
全局变量的行为类似于单例,因此您需要谨慎对待全局变量。
你应该在需要使用它的最小范围内声明变量。这降低了在错误位置使用错误变量的风险。使代码健壮和可维护应该始终是首要考虑的问题。如果代码不能正常工作,那么代码的速度有多快都没有关系。
总之,声明局部变量是非常便宜的。当调用该方法时,会在堆栈上创建一个堆栈帧,并且 space 用于局部变量是通过扩大堆栈帧来实现的。由于设置堆栈帧的大小只是一条对堆栈指针进行减法的指令,而且无论如何都会完成,因此为局部变量分配 space 实际上根本不需要时间。
我目前正在考虑什么更好。 我有一些经常被调用的函数,这些函数使用这些函数正在使用的变量,我在想是否应该在 class 中将它们声明一次为全局变量,这样我就可以始终在函数中重用它们。或者在方法中声明它们,因此每次执行函数时。 如何专业地做到这一点?
答案是,这取决于。如果您在一个地方设置这些变量并且只在相关函数中读取它们的值,那么将它们设为全局变量是有意义的,但是如果您打算在这些函数中修改它们,那么如果您将它们设为全局变量,您的函数将不会产生预期的结果。 全局变量的行为类似于单例,因此您需要谨慎对待全局变量。
你应该在需要使用它的最小范围内声明变量。这降低了在错误位置使用错误变量的风险。使代码健壮和可维护应该始终是首要考虑的问题。如果代码不能正常工作,那么代码的速度有多快都没有关系。
总之,声明局部变量是非常便宜的。当调用该方法时,会在堆栈上创建一个堆栈帧,并且 space 用于局部变量是通过扩大堆栈帧来实现的。由于设置堆栈帧的大小只是一条对堆栈指针进行减法的指令,而且无论如何都会完成,因此为局部变量分配 space 实际上根本不需要时间。