修改接口

1、接口修改了,什么事情都可能发生。

 

2、当需要修改的接口被那些“找不到,即使找到也无法修改”的代码使用时,接口的修改才会成为问题。这种情况下,我们会说,这个接口是“已发布接口”。

 

3、如果重构手法改变了“已发布接口”,你必须同时维护新旧两个接口,知道所有用户都有时间对这个变化做出反应,这不太困难。请尽量这么做:让旧接口调用新接口。当你修改函数名称时,请留下旧函数,让旧函数调用新函数。千万不要拷贝函数实现代码,那样会让你陷入“重复代码”的泥沼。

 

4、修改接口的典型例子:Java聚集类,Collection classes,Java2使用新聚集取代了原有的一些聚集接口。Java2发布时,Java做了很多工作使得开发者顺利迁徙。

 

5、保留旧接口使得我们必须维护一些额外的函数,使得接口复杂和难用。还好我们还有一个选择:不要发布接口。

 

6、发布接口很有用,但也有代价,除非真有必要,不要发布接口。

 

7、不要过早发布接口。

 

8、Java中一个特别关于“修改接口”的问题:在一个函数的throws子句增加一个异常,函数的用户代码需要作出相应修改,否则无法编译通过。这时,可以为这个函数选择一个新名字,让旧函数调用它,并将新增的checked exception转为unchecked exception。你也可以抛出一个unchecked exception,不过这样会失去编译器检查能力。

 

9、可以为整个package定义一个superclass异常,类似java.sql中的SQLException,并确保所有public函数只在自己的throws子句中声明这个异常。这样就可以随心所欲地定义subclass异常,因为调用者永远只知道那个更具一般性的superclass异常。

 

 

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页