哪种方案更适合

Raj*_*aju 9 validation

如果变量可以取n个值,我们应该检查值的有效性,或者假设如果所有ni检查都失败则它将是第n个值.

例如,如果我们有一个将性别存储为M或F的变量.使用此:

If gender = "M"
   do male_processing
else
   do female_processing
endif
Run Code Online (Sandbox Code Playgroud)

或这个:

If gender = "M"
  do male_processing
else
  if gender = "F"
     do female_processing
  else
     print "Something has gone wrong Gender has a value " Gender
  endif

endif
Run Code Online (Sandbox Code Playgroud)

bli*_*app 10

对于那个例子,我根本不会使用IF,我会使用SWITCH作为你的第二个例子

switch (gender) 
    case "M":
        do male_processing
        break
    case "F":
        do female_processing
        break
    default:
        print "Something has gone wrong Gender has a value " Gender
 endswitch
Run Code Online (Sandbox Code Playgroud)

或者对于您的第一个示例,我只是使用ASSERT将异常视为错误

assert (gender = "M" or gender = "F")
Run Code Online (Sandbox Code Playgroud)

  • +1 - 不是用于开关,而是用于处理第三种情况.你 - **应该**对待第三种情况 - 无论是"ELSE","DEFAULT","ASSERT"还是你做到了.检查一下.你的追随者/未来的自我会感谢你. (3认同)

Mar*_*arc 1

对于这种类型的构造,我喜欢使用 switch 语句。不是因为它更短(事实并非如此),而是因为它更具可读性(恕我直言):

switch(gender) {
  case "M":
    doMaleSpecificStuff();
    break;
  case "F":
    doFemaleSpecificStuff();
    break;
  default:
    throw AnyError;
}
Run Code Online (Sandbox Code Playgroud)