如何提高代码复用性?
在说明如何提高代码复用性前,有必要了解一下代码复用性的层次,大致整理了如下几个层次,下面分别说明:
1.第一层
最能想到,最常用的代码复用:方法和类复用,比如说我们写了一个方法,这个方法在本jar包中其他地方也用,那可以抽出来放在一个类中,这样其他类也可以使用;常见的就是各种xxxUtil类,如常见的StringUtil:
public class StringUtil {
public static boolean isEmpty(String value) {
return value == null || value.trim().length() == 0 || "null".endsWith(value);
}
}
2.第二层
随着项目越来越大,我们发现不光本jar包里面需要此复用类了,其他很多jar都需要此类,那怎么办,这时候就出现了把相关复用类放到一个jar包中,比如叫xx-
util.jar
,这样其他jar都可以直接引用这个通用jar;3.第三层
项目慢慢的发展,出现了另外的问题,复用jar包升级的问题,比如复用jar里面有个bug需要升级,那么其他所有引用此jar的地方都要升级,改动量很大;这该怎么解决,这时候出现了服务化,也就是说公共的jar功能不在被其他应用引用,而是对外提供一个统一个服务接口,这样不管我这个服务内部怎么变只要接口不变都没有关系;
4.第四层
随着服务越来越多,服务间调用越来越频繁,出现了rpc中间件;数据库的访问也出现了数据库中间件;消息的发送存储接收出现了消息中间件;缓存,调度,配置中心,等等大量的中间件出现使我们构建一个服务更加方便;这其实也是一种更加抽象的复用;
5.第五层
下一代微服务网格,服务间通信的基础设施层,对开发人员来说屏蔽了更多的细节,专注更多的业务;
从上面5个层次来看,其实也是软件行业开发经历的过程;其实我们可以从软件抽象复用的角度来看,其他每一层次的进化,都是为了更好的复用,抽象出更多的本质东西,使开发人员更加的关注各自不一样的业务。
那么问题来了如何提高代码的复用性,我觉得离不开两个词:抽象;其实现在大量使用的各种中间件何尝不是一种抽象,抽出本质的东西,放在一个地方单独处理;举个简单的例子,比如我要到某地去,我可以骑车去,可以做公交去,可以走去,可以开车去,但是抽出本质其实就是我要去某地,关于如何去都是具体的实现方式。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有