防御性编程风格的冗余参数验证

时间:2014-10-31 14:57:06

标签: java validation null factory

我有一个工厂类,它生成Order对象,而Order对象又创建Item对象。这3个类捆绑在一个包中,没有其他类。每个项目都有一个" ItemMode"属性。我创建了过多的空检查以实现防御性编程风格。虽然我对这种编码风格很有信心,虽然它有点冗长,但我现在怀疑这种方法,原因如下:

  • 如果创建的对象数量和需要验证的参数数量增加,那么必须运行大量代码。这可能是性能问题吗?如果是这样,我们是在谈论纳秒,毫秒还是普通秒?
  • 考虑到只有工厂能够实例化Order和Item对象,理论上我们可以跳过其他类中的冗余if == null检查。我知道不能使用null模式创建工厂,因此不能使用null模式创建Orders或Items。但是,我知道这是因为我编写了代码。对于项目中的其他开发人员来说,这不是先验的。

你会保留多余的支票吗?

我首先制作了Item类:

class Item
{
   //Constructor
   protected Item(ItemMode mode)
   {
       if(mode == null)
       {
           throw new IllegalArgumentException("mode should not be null.");
       }
   }

   ...
}

然后是Order类:

class Order
{
   //Constructor
   protected Order(ItemMode mode, ...)
   {
       if(mode == null)
       {
           throw new IllegalArgumentException("mode should not be null.");
       }
   }

   ...

   public void methodThatMakesSomeItems()
   {
        ...
   }
}

最后是工厂类:

class Factory
{
   //Constructor
   public Factory(ItemMode mode, ...)
   {
       if(mode == null)
       {
           throw new IllegalArgumentException("mode should not be null.");
       }
   }

   ...

   public void methodThatMakesSomeOrders()
   {
        ...
   }
}

0 个答案:

没有答案