代码之家  ›  专栏  ›  技术社区  ›  Mike Boers

是否有理由使用get/put方法而不是项访问?

  •  2
  • Mike Boers  · 技术社区  · 14 年前

    我发现我最近在类上实现了映射接口,这些类表面上符合模型(它们基本上只是没有更多元数据的键值存储),但在它们下面有时相当复杂。

    下面是几个日益严重的例子:

    1. 包装另一个映射的对象,在设置时将所有对象转换为字符串。
    2. 使用本地数据库作为后端来存储键值对的对象。
    3. 向远程服务器发出HTTP请求以获取/设置数据的对象。

    2 回复  |  直到 14 年前
        1
  •  0
  •   SingleNegationElimination    14 年前

    从严格的哲学观点来看,我不认为你可以越过这条线。如果某个工具提供了所需的功能,但是它的API不同,那么就进行调整。唯一不应该这样做的是,如果adaptedtoapi没有足够的表达能力,无法以所需的方式操作adapted组件。

    我会毫不犹豫地将数据库改编成dict,因为这是一种很好的操作集合的方法,而且它已经兼容了很多其他代码。如果我发现我的特定应用程序必须调用数据库连接 begin() , commit() ,和 rollback()

        2
  •  2
  •   msw    14 年前

    听起来你在描述标准 anydbm 模块语义。就像任何dbm都会引发异常一样 anydbm.error 你的子类也可以像 MyDbmTimeoutError 根据需要。无论您是将其实现为字典操作还是函数调用,调用方仍然必须处理异常(例如。 KeyError , NameError ).

    我认为在Python2和3.x中存在任意的“绑定”哈希是合理的理由,可以说这是一种合理的方法。事实上,我一直在寻找(并在我的头脑中设计)比简单的键值映射更复杂的绑定,而没有一个沉重的ormsql层。

    补充 是一个 字典。它是在内核中,还是在磁盘上,还是在网络上,这是一个最好抽象的实现细节。唯一的实质性区别是延迟增加和可能的不可用性;然而,在基于虚拟内存的操作系统中,“核心”的延迟可能比RAM高,而在多处理操作系统中,“核心”也可能变得不可用。所以这些只是程度上的差异,而不是种类上的差异。