Eiffel:getters 的最佳实践 return 如果找不到对象是否无效?
Eiffel: Best practices with getters return Void if object not found?
Eiffel 的最佳实践是什么return 如果未找到,则从函数中获取对象。我看到许多集合,例如 ARRAY,例如基于先决条件或其他功能的未找到行为。
许多语言在找不到对象时 returning 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
策略取决于底层结构、业务逻辑等
一个例子是已知元素位于特定索引、键等处。类似数组的结构属于此类。尝试检索数组边界外的元素会被视为错误。因此,有一个前提条件是一个合适的方法。
另一个例子是当不知道一个元素是否存在时。考虑一个 XML DOM 树和一个获取给定名称的所有元素的查询。这些元素是否存在尚无先验知识。因此,一个合理的做法是returnVoid
当没有找到匹配的元素时
所以,这不是非黑即白的两难选择,决策应该考虑上下文。
Eiffel 的最佳实践是什么return 如果未找到,则从函数中获取对象。我看到许多集合,例如 ARRAY,例如基于先决条件或其他功能的未找到行为。
许多语言在找不到对象时 returning 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
策略取决于底层结构、业务逻辑等
一个例子是已知元素位于特定索引、键等处。类似数组的结构属于此类。尝试检索数组边界外的元素会被视为错误。因此,有一个前提条件是一个合适的方法。
另一个例子是当不知道一个元素是否存在时。考虑一个 XML DOM 树和一个获取给定名称的所有元素的查询。这些元素是否存在尚无先验知识。因此,一个合理的做法是returnVoid
当没有找到匹配的元素时
所以,这不是非黑即白的两难选择,决策应该考虑上下文。