0

考虑一个类 Device 如下。考虑一个方法 filterByType,它接受一组设备作为输入参数并返回指定类型的设备:

class Device
{
  String barcode;
  String name;
  String type; // values like 'Laptop', 'Desktop', 'Tablet' etc.

// other methods
.
.
.
}

类设备管理器{

/**
* @param devices is a list of Device type objects
* @param requiredType filter
*/
List<Device> filterByType(List<Device> devices, String requiredType)
{
 // Assert that the input list is neither null or empty
 // Assert that the requiredType parameter is valid

 // Do I assert type member here? i.e. Iterate through all collection members to check that type  member is non-empty
 .
 // Filter based on type member value
 .
 .
 // throw an exception if type is empty
}
.
.

}

查询:

  1. 我们是否在方法本身的开头添加一个断言,每个实例都具有所需的信息,或者在迭代集合时开始过滤并在类型确实为空时抛出异常是否更好

  2. 在方法级别 javadoc 中添加必须提供 Device 'type' 成员(即非空)的注释是否是一种好习惯,或者这是否提供了太多(内部)实现细节

4

1 回答 1

0

如果你做DeviceType一个enum,那么你只需要检查null。如果Devices 需要类型,则检查该类型的时间是Device构造的时间。万一 type 是 a 的可选属性Device,您可以 (a) 声明无类型设备与 requiredType 不匹配,因此您不返回它们,或者 (b) 在您检查并处理失败。如果您这样做 (b),则仅当此方法面向内部(私有)时才应使用断言。如果它是公共的,则需要抛出异常,无论是运行时还是检查。

文档列出先决条件是合理和预期的。

于 2013-09-06T11:25:17.820 回答