代码之家  ›  专栏  ›  技术社区  ›  Dominik

API设计:pass id或complete对象

  •  1
  • Dominik  · 技术社区  · 6 年前

    假设有一个人和一个地址对象。此人未提及地址,但仅持有其id。例如:

    Person {
      id: PersonId,
      addressId: AddressId,
      name: String,
      ...
    }
    
    Address {
      id: AddressId,
      street: String,
      ....
    } 
    

    模型是遗留的,无法更改。

    void setAddress(PersonId id, Address address)
    
    void setAddress(Person person, Address address)
    

    如您所见,唯一的区别是,一次只发送此人的id,一次发送完整的person对象。

    你会选择哪一个?为什么?

    1 回复  |  直到 6 年前
        1
  •  2
  •   ItFreak    6 年前

    我会选择第一个,所以这个API的调用者只需要提供最少的信息,API实现获取继续调用所需的所有信息(在您的示例中,从数据库或其他地方获取此人)。