raid重构原理_5个重构原理示例

本文详细介绍了重构过程中遵循的五个关键原则:用“什么”隐藏“如何”,追求一致性,避免深度嵌套,保持单一关注点,以及明智地避免重复。通过具体示例展示了如何在Gradle Modules Plugin的重构中应用这些原则,以实现更清晰、易读的代码。
摘要由CSDN通过智能技术生成

raid重构原理

这篇文章介绍了重构真正的开源代码( Gradle Modules Plugin )时应用的五​​种(最著名的)重构原理。

语境

当我为Gradle Modules Plugin (PR #73单独编译 module-info.java ,我注意到了一些重构的潜力。 结果,我提交了问题#79 ,后来通过PR #88 (尚未合并)解决了该问题,在其中重构了代码。

事实证明,重构比我最初想象的要广泛得多。 在这里,我介绍此PR的一部分,作为我在那里应用的重构原理的示例。

重构原理

注意:这里列出的列表绝不是全面的,并且原则并不是原创的(不过,我以自己的声音并根据自己的理解提出了这些原则)。 正如我所看到的,这篇文章的最大价值在于遵循这些原则的真实示例。

这里介绍的五项原则是:

  1. 用“什么”隐藏“如何”
  2. 力求一致性
  3. 避免深层嵌套
  4. 单独的关注点(=单一责任原则)
  5. 明智地避免重复(=不要重复自己)

1.用“什么”隐藏“如何”

该原则只是由Robert Martin提出的“ 干净代码”原则的一部分。

对我来说,用“什么”隐藏“如何”意味着在任何时候提取类和方法

  • 我可以识别出由某些代码执行的独特,非平凡的功能,并且
  • 我可以用一个有意义的名称将这种不琐碎的事情隐藏起来。

示例1:

重构之前,这是RunTaskMutator的一个片段:

 mainDistribution.contents(copySpec -> copySpec.filesMatching(patchModuleExtension.getJars(), action -> { 
   RelativePath relativePath = action.getRelativePath().getParent().getParent() 
       .append( true , "patchlibs" , action.getName()); 
   action.setRelativePath(relativePath);  })); 

这是重构后的代码段:

 mainDistribution.contents( 
     copySpec -> copySpec.filesMatching(patchModuleExtension.getJars(), this ::updateRelativePath)  ); 

综上所述,我们:

  • 隐藏如何更新相对路径
  • 与我们有什么 (=我们更新它的事实)。

由于有了这样的重构,掌握mainDistribution发生的事情要容易mainDistribution

作为参考, 这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值