1

当我想到这是一个糟糕的编程时,我正在编写一个 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 .

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

4

0 回答 0