我正在编写一个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抛出异常。
这是防御性编程吗?或偏执狂?