当我想到这是一个糟糕的编程时,我正在编写一个 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 .
这是防御性编程吗?还是偏执狂?