2

这里有两种调用方式callscript(伪代码):

使用重复调用

if flag == true
    flag = false
    callscript
    flag = true
else
    callscript
endif

使用额外的变量

flag2 = flag
flag = false
callscript
flag = flag2

条件

  • 我必须确保那flagfalse调用脚本的时间。
  • 此外,该flag值必须恢复到原始值。

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

4

6 回答 6

5

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

callscript(false)

如果这不是一个选项,而您必须在两者之间进行选择,那么任何一个都可以。没有明确的赢家,两者的可读性大致相同,所以这只是一个品味问题。

如果实际调用很复杂以至于您不想在代码中重复它,或者如果数据类型比布尔值更复杂,则第二种选择会更好。

于 2010-09-29T10:55:31.790 回答
4

我会选择变体二,改变变量的名称,使其更容易理解。

saved_flag = flag
flag = false
callscript
flag = saved_flag
于 2010-09-29T10:34:00.017 回答
1

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

backupValueOfFlag = flag
flag = false
callscript
flag = backupValueOfFlag

) 它更清楚你在做什么以及为什么要这样做。

于 2010-09-29T10:33:38.367 回答
0

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

你真的需要和全局变量一起工作吗?

于 2010-09-29T10:33:45.727 回答
0

我会选择第二个。第一个对我来说太人工了——if不是为了程序流程,而是为了保留标志值。

于 2010-09-29T10:33:46.430 回答
0

至于我,更好的选择是第一个。因为它更具可读性和更清楚那里发生了什么。

于 2010-09-29T10:33:50.017 回答