知识屋:更实用的电脑技术知识网站
所在位置:首页 > 教育

掌握Java编程技巧,代码重构

发表时间:2022-03-23来源:网络

代码重构在不改变软件系统外部行为的前提下,改善它的内部结构,通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。

代码重构目标

持续纠偏和改进软件设计

随着项目的开发,程序代码逐渐腐败变质,愈来愈像断线的风筝,脱缰的野马无法控制;

对代码进行整理重构,让所有带着发散倾向的代码回归本位。

帮助发现隐藏的代码缺陷

重构代码可以加深对之前代码的理解,发现软件设计的不足,找出其中的问题和隐患,构建出更好的代码。

提高编程效率

从长远来看,代码重构,改善设计、提高可读性、减少缺陷,可以提高软件开发后续的效率。

代码重构技巧

提炼重复代码

代码重构最常见有效的手法就是提炼重复代码。

发现重复代码,将其提炼到合适的方法中,减少总代码量

class BadExample {

public void someMethod1(){

//code

System.out.println("重复代码");/* 重复代码块 */

//code

}

public void someMethod2(){

//code

System.out.println("重复代码");/* 重复代码块 */

//code

}

}

/---------------------分割线----------------------/

class GoodExample {

public void someMethod1(){

//code

someMethod3();

//code

}

public void someMethod2(){

//code

someMethod3();

//code

}

public void someMethod3(){

System.out.println("重复代码");/* 重复代码块 */

}

}

分割冗长方法

将某些冗长的方法进行分割,使每个方法都能实现某种子功能,遵守单一原则,也可提高方法的可重用度。

优化嵌套条件分支

1、将不满足某些条件的情况放在方法前面,并及时跳出方法,以免对后面的判断造成影响。

class BadExample {

public void someMethod(Object A,Object B){

if (A != null) {

if (B != null) {

//code[1]

}else {

//code[3]

}

}else {

//code[2]

}

}

}

/---------------------分割线----------------------/

class GoodExample {

public void someMethod(Object A,Object B){

if (A == null) {

//code[2]

return;

}

if (B == null) {

//code[3]

return;

}

//code[1]

}

}

2、将条件分支合并,使代码清晰

class BadExample {

public void someMethod(Object A,Object B){

if (A != null) {

if (B != null) {

//code

}

}

}

}

/---------------------分割线----------------------/

class GoodExample {

public void someMethod(Object A,Object B){

if (A != null && B != null) {

//code

}

}

}

模拟柯里化,消除过长参数列表

柯里化(Currying),把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数。

将多个参数封装成一个对象传递给方法,从而去除过长的参数列表。

提取类中使用到的常量

消除一些魔数或者是字符串常量

class BadExample {

public void someMethod1(){

send("您的操作已成功!");

}

public void someMethod2(){

send("您的操作已成功!");

}

}

/---------------------分割线---------------------- /

class GoodExample {

protected static final String SUCCESS_MESSAGE = "您的操作已成功!";

public void someMethod1(){

send(SUCCESS_MESSAGE);

}

public void someMethod2(){

send(SUCCESS_MESSAGE);

}

}

精练类的方法,让类提供该提供的方法

定义类方法时,要让这个类拥有它该拥有的方法,做它该做的事。

提取继承类中重复的属性与方法到父类

将子类中某些公共的属性或方法,提取到父类中。

lambda取代内部类

将匿名内部类转为Lambda表达式。Java8中让人又爱又恨的Lambda表达式

//匿名类

Runnable r1 = new Runnable() {

@Override

public void run() {

System.out.println("Hello");

}

};

//Lambda表达式

Runnable r2 = () -> System.out.println("Hello");

消除巨类

当一个类拥有太多的代码时,就需要对其拆分,提取出该类不需要承担的职责。

清理冗赘类

Java中类并不是越多越好。清理合并那些没有什么实际作用的类

代码重构需要单元测试来支持,能够确保修改的代码不会带来大的影响。代码重构对提升编程技巧非常有帮助,只有发现代码中的问题和缺陷,进行合理的修改重构,才能有针对性地规避某些错误。

以上就是小编为大家分享的所有内容,有想了解更多资讯或相关知识,可以关注学佳澳官网或微信公众号“学佳澳工程实训联盟”。学佳澳一家专业的IT培训机构!另外“学佳澳牛人课堂”微信公总号免费公开课全面上线,一大批干货正在路上,想看的朋友记得点关注哦!

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜