如果没有找到,从功能中返回对象的最佳实践是什么。我看到许多类似ARRAY的集合,例如,未发现的行为都是基于例如或其他功能的前提条件。
许多语言的政治基础都是在未找到对象时返回Void(或null)。在埃菲尔铁塔中,这是否意味着会有可拆卸的物体?
item_at_index (index: INTEGER): detachable FOO
do
if bar_collection.valid_index(i) then
Result := bar_collection.item_at(i)
else
Result := Void
end
end
item_at_index (index: INTEGER): detachable FOO
require
bar_collection.valid_index(i)
do
Result := bar_collection.item_at(i)
end
答案 0 :(得分:0)
该策略取决于基础结构,业务逻辑等。
一个示例是,当已知某个元素位于特定的索引,键等处。类似数组的结构属于此类。尝试检索数组边界之外的元素可被视为错误。因此,先决条件是一种合适的方法。
另一个例子是当未知某个元素是否存在时。考虑一个XML DOM树和一个查询,以获取给定名称的所有元素。没有事先知道是否存在这样的元素。因此,一种合理的方法是在找不到匹配的元素时返回Void
。
所以,这并不像黑白两难困境,该决定应考虑上下文。