防御性编程,if-then-else应该是一个转换案例?

时间:2016-02-01 20:07:05

标签: if-statement switch-statement defensive-programming

我正在编写一个if-then-else,当我发现这是一个糟糕的编程:

state = "published" # state could be "published" or "draft"

...

if state == "published"
  display_production_copy
else 
  display_draft_copy
end

但是,当我编写这个函数时,我发现我应该写这个

state = "published" # state could be "draft"

...

case state
when "published"
  display_production_copy
when "draft"
  display_draft_copy
else
  fail "Invalid state: #{state}" # throw an exception
end

这样一来,如果有人添加了一个不同的状态,例如:“reviewing”并且程序员没有“更新”这个方法,那么就会运行错误的编程。

我怀疑在所有存在明确值集的情况下,除了TRUE或FALSE之外,所有if-then- [elseif] -else比较都应该通过case [switch]来完成,并且必须带有一个else抛出异常。

这是防御性编程吗?或偏执狂?

0 个答案:

没有答案