埃菲尔铁塔:如果找不到对象,使用吸气剂的最佳做法将返回Void?

时间:2018-09-28 13:08:30

标签: null void eiffel

如果没有找到,从功能中返回对象的最佳实践是什么。我看到许多类似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

1 个答案:

答案 0 :(得分:0)

该策略取决于基础结构,业务逻辑等。

一个示例是,当已知某个元素位于特定的索引,键等处。类似数组的结构属于此类。尝试检索数组边界之外的元素可被视为错误。因此,先决条件是一种合适的方法。

另一个例子是当未知某个元素是否存在时。考虑一个XML DOM树和一个查询,以获取给定名称的所有元素。没有事先知道是否存在这样的元素。因此,一种合理的方法是在找不到匹配的元素时返回Void

所以,这并不像黑白两难困境,该决定应考虑上下文。