以下是两种调用callscript
(伪代码)的方法:
使用重复调用
if flag == true
flag = false
callscript
flag = true
else
callscript
endif
使用额外的变量
flag2 = flag
flag = false
callscript
flag = flag2
条件
flag
为false
。flag
值必须恢复为原始值。有比这两个更好的方法吗?如果没有,哪一个是更好的选择?
答案 0 :(得分:5)
最好的方法是在调用中发送标志,以便标志和方法之间的关系清晰:
callscript(false)
如果这不是一个选项,你必须在两者之间做出选择,那么任何一个都可以。没有明显的赢家,两者的可读性大致相同,所以这只是一个品味问题。
如果实际调用很复杂,那么第二个选项会更好,因此你不想在代码中重复它,或者数据类型比布尔值更复杂。
答案 1 :(得分:4)
我会使用变量2来更改变量名称,以使其更容易理解。
saved_flag = flag
flag = false
callscript
flag = saved_flag
答案 2 :(得分:1)
我更喜欢第二个,因为如果你以明智的方式命名flag2(比如
)backupValueOfFlag = flag
flag = false
callscript
flag = backupValueOfFlag
)你正在做的事情以及为什么要这样做更清楚。
答案 3 :(得分:0)
我认为这就是为什么发明了局部变量和子程序参数的原因。
你真的必须使用全局变量吗?
答案 4 :(得分:0)
我会选择第二个。第一个对我来说过于人性化 - if
没有程序流,而是保留标志值。
答案 5 :(得分:0)
至于我,更好的选择是第一个。因为它更具可读性,更清晰。