1

考虑一个简单的新闻文章 Web 应用程序的情况,该应用程序具有“状态”的 DB 表列,可通过以下单选按钮集访问:

状态 - [x] 发布 [] 草稿 [] 存档

...其中“发布”公开显示文章,“草稿”和“存档”不公开。从功能上讲,“草稿”和“存档”做同样的事情,但带有额外的元数据含义。“显示”和“隐藏”两种功能状态以及“发布”、“草稿”和“存档”的元数据混合在“状态”的同一列中。

这是一个好习惯吗?虽然这是一个非常简单的案例,但更大的案例可能会揭示这种做法的缺陷(或没有......)。

4

2 回答 2

2

功能状态与行为有关——它们不需要在您的数据库中建模。如果您的业务逻辑只关心“显示”状态为“已发布”的文章 - 没有理由使用“显示”列将数据的复杂性加倍。

在您决定业务逻辑需要额外数据来决定是否显示或隐藏文章(可能是 IsApproved 标志)时,您可以存储该数据。

换个角度看——如果再增加一列“Show”,那么状态为“Draft”和“Show”=1的文章会怎么做?根据您的业务规则,这是一个无效状态。

于 2008-10-02T22:05:43.473 回答
0

在这种情况下,我会说这是适当的功能。

我们都在媒体上看到过有人不小心同时点击 show[x] 和 Draft[x] 的 WTF。

就现在的样子,不可能一不小心把草稿拿出来。这在报纸上很重要,因为记者因以下内容而臭名昭著:

StackOverflow 的 John Doe 说:“---我不记得那个丑陋的混蛋说了什么——检查磁带,稍后再填写”

可能不应该打印。

于 2008-10-02T22:03:28.797 回答