Language agnostic 我应该如何格式化这段代码?

Language agnostic 我应该如何格式化这段代码?,language-agnostic,program-flow,Language Agnostic,Program Flow,以下是调用callscript(伪代码)的两种方法: 使用重复呼叫 使用额外变量 条件 在调用脚本时,我必须确保标志为false 此外,标志值必须恢复为原始值 有没有比这两个更好的方法?如果不是,哪一个是更好的选择?我更喜欢第二个,因为如果您以合理的方式命名flag2(如 )更清楚的是你在做什么,为什么要这么做。我认为这就是局部变量和子程序参数被发明的原因 你真的要和globals合作吗?我会选择第二个。第一个对我来说太人工了-如果不是为了程序流而是为了保留标志值,那么对我来说,更好的选择是

以下是调用
callscript
(伪代码)的两种方法:

使用重复呼叫

使用额外变量

条件

  • 在调用脚本时,我必须确保
    标志
    false
  • 此外,
    标志
    值必须恢复为原始值

有没有比这两个更好的方法?如果不是,哪一个是更好的选择?

我更喜欢第二个,因为如果您以合理的方式命名flag2(如


)更清楚的是你在做什么,为什么要这么做。

我认为这就是局部变量和子程序参数被发明的原因


你真的要和globals合作吗?

我会选择第二个。第一个对我来说太人工了-如果
不是为了程序流而是为了保留标志值,那么
对我来说,更好的选择是第一个。因为它更具可读性,也更清楚那里发生了什么。

我将使用变体2,并更改变量名称,使其更易于理解

saved_flag = flag
flag = false
callscript
flag = saved_flag

最好是在调用中发送标志,以便标志和方法之间的关系清晰:

callscript(false)
如果这不是一个选择,你必须在两者之间做出选择,那么任何一个都可以。没有明确的赢家,两者的可读性差不多,所以这只是品味的问题


如果实际调用很复杂,因此您不想在代码中重复,或者如果数据类型比布尔类型更复杂,那么第二个选项会更好。

您真的需要使用全局变量吗?-是的,在这种情况下。
backupValueOfFlag = flag
flag = false
callscript
flag = backupValueOfFlag
saved_flag = flag
flag = false
callscript
flag = saved_flag
callscript(false)