良好的接口设计不需要潜规则

初始化的设计

例子

class A{
  private static A INSTANCE = new A();      

  public A getInstance(){return INSTANCE};

  private A(){
   initData();
  }
  private void initData(){remotecall()};
}

这个class的设计有一个API. getInstance
这个API的含义是:
1.单例
2.如果第一次调用会触发数据的初始化,rpc调用加载数据.

这个设计暗含一个潜规则:使用方在使用的时候, 要在初始化的地方做一次getInstance调用.
如果没有初始化, 在使用的时候直接getInstance,会导致第一次使用的时候影响性能.

改进

API的设计不要暗含潜规则, 接口设计要明确, get接口要幂等, 每次调用都是一样的效应.
而不能是第一次调用和后续的调用有任何差别.

以上的例子建议修改为两个接口.
1.getInstantce();
2.Init();
使用方通过接口定义就能清楚的指导接口使用的场景和预想到接口调用的后果.
而不是非要阅读接口方的源代码或者通过潜规则的传递.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值