填坑要诀:一、永远不要动老接口

重要的话说三遍都不为过。

永远不要动老接口,无论这个接口是别人写的,还是你写的。 永远不要动老接口,无论这个接口有人用,还是没人用。 永远不要动老接口,无论是什么样的理由。

可能要动这个接口的理由很多:

  1. 这个接口代码写的太烂,要优化一下
  2. 这个接口现在没人用了,注释掉或删了吧
  3. 底层实现修改了,这个接口的参数或返回值也要修改
  4. ……

亦或是你自己对自己的修改信心满满:

  1. 我知道哪些地方调用了这个接口,不会有任何影响
  2. 我只是稍微优化了下代码逻辑,保证接口行为同原来一致
  3. ……

真的,有时候连我自己都说服自己要下手了……

不过,先来看下不能动老接口的理由:

1、 接口签名的修改,影响现有调用方

这个是最主要的理由。由于现在微服务盛行,接口发布出去后,不知道哪些地方会调用这些接口,在IDEA里简单的Option+F7没有办法找到所有的调用方。 就算知晓所有的调用方,让这些调用方一一修改代码也是下下策。

2、 接口逻辑的修改,无法保证逻辑一致

这个是藏的比较深的理由,可能很少注意。比如一个校验用户合法性的接口,原来只根据用户手机号确认合法性,后来又加入了用户ip的验证。虽然接口签名没有变,但是里面的逻辑变了,这个变化难以估计影响。 上面两点就是修改老接口的两点,针对上面两个修改,有如下两个方案或建议:

  1. 修改接口签名的,新写一个同名接口,签名不同,将原来的接口加上注解@Deprecated
  2. 修改接口逻辑的,新写一个接口,名字体现修改的逻辑

总而言之,言而总之,不要动老接口,新写一个接口为好。

当然,新写一个接口未免不是又在挖坑,但至少比在原来的坑上修修补补来的方便、快捷和可控。

最最最后,如果非要修改老接口,就按照上面的两个不能动的理由,好好分析影响,做好测试。


最后修改于 2018-12-11