我有一个表示数据库中表的模型类。 该表有7列,因此该类有7个属性。其中一些被允许为空,另一些则不被允许。
因此,当我将一个人传递给公共函数时,我检查不允许为null的属性是否为空。正常检查如
if(person.getName() == null || person.getSurname() == null ...)
throw new NullPointerException();
我现在想知道在Person类中创建函数是否有任何缺点,基本上这样做?像
public void checkFullDataset()
{
if(name == null || surname() == null ...)
throw new NullPointerException();
return;
}
因此,每当我与某人合作时,我都会调用此方法,而不是手动测试所有字段。如果将来更改表(添加新字段,返回null / not null行为等)也会有所帮助,因为我只需要更改此函数而不是代码中的许多“if's”。
答案 0 :(得分:1)
两个想法:
最好禁用空构造函数,并引入一个以所有字段作为参数并将检查放在那里的构造函数。
如果您想添加此类方法,最好使会话返回boolean
类似于标准check
函数,例如hasElement()
,hasNext()
和{{ 1}}等让用户处理它。
iEmpty()
答案 1 :(得分:0)
满足您需求的最佳解决方案是让您的Person
类不可变,并使用构建器模式在初始化时检查必填字段,然后检查从不 :
请看这个示例:http://xavimiro.blogspot.fr/2008/04/new-builder-pattern.html
答案 2 :(得分:0)
你似乎发现的是“阶级不变”的概念。有编程语言,例如Eiffel
语言在进入和退出类的每个公共函数之前检查约束,如果不满足则抛出异常;几乎就是你自己做的事情。
还要查找功能前置条件和后置条件,类似的概念。
根据代码的不同,您可能会发现检查是性能问题,在这种情况下,您可以针对生产代码禁用它们