java如何降低代码重复率,编写高质量代码改善JAVA程序的151个建议

  java如何降低代码重复率,编写高质量代码改善JAVA程序的151个建议

  提高java代码复用性的方法和措施有哪些?这里有三种方法可以提高java代码的可重用性。一起来了解一下吧~

  一、改写类的实例方法

  通过类继承的代码复用不是一种准确的代码复用技术,所以不是理想的代码复用机制。继承总是会带来一些冗余的方法和数据成员,这总是会使重用类中某个方法的代码变得复杂。

  此外,派生类对父类的依赖使代码更加复杂:对父类的更改可能会影响子类;当修改父类或子类中的任何一个类时,我们很难记住哪个方法被子类覆盖,哪个方法没有被子类覆盖;最后,有时子类中的覆盖方法是否调用父类中的相应方法并不明显。

  任何方法,只要它执行单个概念的任务,它本身应该是首选的可重用代码。为了重用这些代码,我们必须回到面向过程的编程模式,将类的实例方法移到一个全局过程中。

  为了提高这个流程的可重用性,流程代码应该像静态工具方法一样编写:只能使用自己的输入参数,只能调用其他全局流程,不能使用任何非局部变量。对外部依赖性的这种限制简化了过程的应用,使得过程可以方便地在任何地方使用。

  当然,由于这种组织方式总是让代码有更清晰的结构,即使是不考虑复用性的代码也能从中受益。

  在Java中,方法不能独立于类而存在。因此,我们可以将相关的进程组织成独立的类,并将这些进程定义为公共静态方法。在组织和封装对象数据成员的过程中,类起着不可或缺的作用,而类通过多个接口实现多态性的能力本身也带来了优秀的代码重用支持。

  二、选择最简单的参数接口类型

  描述参数对象所需的接口越简单,其他类实现该接口的机会就越大,因此,其对象可以用作参数的类就越多。从下面的例子可以很容易地看出这一点:

  静态公共布尔运算重叠(窗口窗口1,窗口窗口2) {.}

  此方法用于检查两个窗口是否重叠。如果这种方法只需要从参数中得到两个窗口的直角坐标,那么对这两个参数进行相应的简化是一个更好的选择。有时,描述参数需求的接口可能有太多的方法。

  此时,我们应该在全局命名空间中定义一个新的公共接口,供面临相同问题的其他代码重用。当我们需要像C语言中的函数指针一样使用参数时,创建一个唯一的接口来描述参数需求是最好的选择。例如,假设有以下过程:

  静态公共空排序(列表列表,排序比较组件){.}

  此方法使用参数中提供的比较对象comp,通过比较给定列表中的对象来对列表进行排序。sort对comp对象的唯一要求是调用一个方法进行比较,所以SortComparison接口不能在其他地方重用。

  三、把参数类型改成接口

  在面向对象编程中,代码重用的真正要点在于通过接口参数类型而不是类继承来利用多态性。我们通过编程接口而不是类来达到代码复用的目的。如果一个方法的所有参数都是对一些已知接口的引用,那么这个方法就可以操作一些对象,这些对象的类在我们写方法的代码时甚至都不存在。从技术上来说,可以重用的是方法,而不是传递给方法的对象。

  例如,让我们假设有这样一种方法:

  静态公共布尔areAnyOverlapping(集合矩形){.}

  此方法用于检查给定集合中的任何矩形对象是否重叠。在这个方法内部,当我们通过循环依次访问集合中的每个对象时,如果不能将对象铸造成类似矩形的接口类型,那么如何访问对象的矩形区域呢?唯一的选择是让对象强制转换其唯一的类形式,这意味着方法必须事先知道它所操作的对象类型,这样方法的重用就仅限于那些对象类型。

  更多内容请点击:java教程以上是提高java代码复用性的详细内容。更多信息请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • java从文件中读取数据的六种方法是什么,java如何从文件中读取数据
  • java从文件中读取数据的六种方法是什么,java如何从文件中读取数据,java从文件中读取数据的六种方法
  • java 获取当前时间的三种方法是什么,java如何获取当前的时间
  • java 获取当前时间的三种方法是什么,java如何获取当前的时间,java 获取当前时间的三种方法
  • java 实体转map,实体对象转map,Java如何实现实体类转Map、Map转实体类
  • ,,Java如何基于wsimport调用wcf接口
  • javaarraylist用法,java如何遍历arraylist
  • java如何将两个数组合并为一个数组,合并数组算法
  • java如何编写函数,Java方法怎么写
  • java定位系统怎么做,java如何定位线上问题
  • Java如何打包为apk,java如何打包jar包_1
  • 如何判断char是不是空格,java如何判断字符是不是空格
  • java面向对象菜鸟教程,java如何面向对象
  • java如何换行输入,java输出语句中怎么换行
  • 顺时针打印二维数组java,java如何输出一个二维数组
  • 留言与评论(共有 条评论)
       
    验证码: