如何解决项目中出现的冗余代码·泛型

泛型的应用

上篇文章特意做了Java中泛型的知识总结,本文写两个例子进一步加深印象。

项目痛点

        今天发现代码中,出现某些类中有很多代码高度相似,只有个别属性/值不同而已,看着如此冗余的代码——不能忍。(目前做的项目属于机密项目,请见谅不能晒出零乱的代码原貌)

设计分析

        通过实际中出的现冗余代码问题,可以发现:该现象是因为代码中相同部分和不同部分的代码抽象定义出了问题,如何解决呢?这里就要用到Java中伟大的泛型了。

具体思路        

类的冗余:将相似的类型中重复代码,抽象出超级类型,统一继承即可;

方法冗余:当方法体一样,参数类型不同时,将参数泛化即可实现不同类型调用执行同一函数。

举个例子

冗余类的解决步骤

提示:如果定义超级类,以父子类的形式解决,这样实现和理解起来较容易,但是这样增加了代码的耦合度,可能会增加代码层级或为了简化代码而破坏原有的业务定义。

        这里建议定义泛型类,在简化代码的同时又能够增强代码的复用性,最关键的是不会改变原本业务上的定义。在前日写得《树状数据结构的通用递归算法实现步骤》文章里提到了定义超级类的应用实例,这里贴上超级类的代码。

泛型类代码

/**
 * 

该类封装冗余类中重复出现的属性

* @author 刘一份 */ @Data public class Tree { /** * 当前节点ID */ private String id; /** * 当前节点名称 */ private String text; /** * 父节点ID */ private String parentId; /** *当前节点下的子节点 */ private List> children = new ArrayList<>(); }

泛型类使用

        泛型类也可以作为超级类直接继承。这里推荐使用泛型类转换后使用。代码如下:

/**
* 获取部门的树状结构数据
*/
public List> getTree() {
    List> dataList= new ArrayList<>();
    List deptList= deptMapper.selectAll();
    this.buildTrees(dataList,deptList);
    return TreeUtil.generateTree(dataList,"");//根节点的父ID为""
}
/**
* 将需要转成树状结构的数据中必要数据赋值给Tree类型,
* 转为通用递归算法统一的入参格式
*/
private void buildTrees(List> dataList,List deptList){
    deptList.forEach(city-> {
        Tree tree = new Tree<>();
        tree.setId(city.getId().toString());
        tree.setParentId(city.getParentId().toString());
        tree.setText(city.getName());
        dataList.add(tree);
    });
}

冗余方法的解决步骤

这里不贴具体的代码了,只做一些伪代码写法。具体不明白的还可以参考上一篇文章《Java中泛型知识点小结》icon-default.png?t=N7T8https://blog.csdn.net/haohaizi_liu/article/details/135068641?spm=1001.2014.3001.5502

//参数允许任意引用类型的集合传入
public void xxx(List objs){}

//参数限制Person的子类型传入
public void xxx(List person){}

//任意引用类型的多个参数
public static > T maximum(T x, T y, T z){}

//参数为数组、集合元素的类型传入
public static < E > void printArray( E[] inputArray ){}

文章小结

        实际项目中出现代码冗余的情况非常常见,但终归还是要每个写代码的工程师,除了对自己的代码要负责之外,还要多考虑其他相关联的一些代码。

以下内容为智能机器人所造,供参考:

解决项目中代码冗余问题的方法有以下几种:

  1. 抽取公共部分:在项目中找出重复出现的代码段,将其抽取为公共的函数或类,然后在需要使用的地方进行调用,以减少冗余代码的重复。

  2. 重构代码:对于重复的代码块,可以进行重构,将其变为一个函数或类,然后在需要的地方进行调用。这样可以提高代码的可读性和可维护性。

  3. 使用工具:可以使用一些代码分析工具,如Lint工具,来检测项目中的冗余代码,并给出相应的建议和解决方案。

  4. 编写更加通用的代码:在编写代码时,尽量遵循"DRY"原则(Don't Repeat Yourself),即不要重复编写相同的代码,而是尽量提取出通用的部分,以减少冗余。

  5. 使用设计模式:合理使用设计模式,如工厂模式、单例模式等,可以减少代码的重复,并提高代码的复用性。

  6. 代码审查:定期进行代码审查,检查项目中是否存在冗余代码,并及时进行优化和重构。

通过以上方法,可以有效地解决项目中的代码冗余问题,提高代码的质量和可维护性。

你可能感兴趣的:(设计模式,后端技术栈,Java,java,原型模式,后端,学习方法)