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

时间:2010-09-29 10:29:51

标签: language-agnostic program-flow

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

  

使用重复调用

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

使用额外的变量

flag2 = flag
flag = false
callscript
flag = flag2
  

条件

  • 我必须确保在调用脚本时flagfalse
  • 此外,flag值必须恢复为原始值。

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

6 个答案:

答案 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)

至于我,更好的选择是第一个。因为它更具可读性,更清晰。