2011-02-10 73 views
0

是否最佳做法是检查值是否为来自数据库的null,即使在不允许空值的列上存在约束。检查数据是否为空

在此先感谢

+1

取决于软件的重要性。一般来说,不,但是,如果你正在编写医疗软件,控制导弹等...... – 2011-02-10 14:27:04

回答

4

你说什么是defensive programming。当你不相信你的意见时,我喜欢认为练习它是件好事。您可能认为现在可以信任您的数据库,但是如果您将来决定该列应该有某个NULL值,该怎么办?那么你需要在任何你认为不是的地方改变你的代码?

如果你从来没有想过你会改变它(比如它是主键或某个东西),那么我认为你不需要。如果你有一天决定改变你的模式,它将会更好地面向未来。如果该列永远不会有NULL的情况,那么你可能不需要检查。如果你得到一个NULL,就像评论者所说的那样,你有一个更大的问题,因为你的数据库可能被洗劫一空。

0

我会说继续,并添加检查您的业务逻辑空值。这在单元测试中也会特别有用。也许不是现在,而是将来。

0

这取决于很多因素。

在我的许多项目中我力求使单元测试,这会脱钩是处理从检索到的数据的代码数据的代码(即通过谈话到数据库。)

这样我可以还可能通过从其他来源提供数据来重用处理数据的代码。在这种情况下,我绝对保证输入值到逻辑层。另外,随着时间的推移,应用程序也在不断发展,所以即使你现在不可能得到空值,在某些时候它可能会被实现,并且很多旧代码会突然得到它没有被写入的东西处理。我个人希望他们快速失败,而不是在某些情况下默默地处理错误。