不知道大家在使用 Idea 开发工具有没有使用 Alibaba Java Coding Guidelines 插件,阿里巴巴基于《阿里巴巴 Java 开发规约》手册内容,研发了一套自动化的 IDE 检测插件。

Python 闲谈 14——安利下IDEA开发神器中好用到爆的插件

如果你在一个以上的地点看到相同的程序结构

醒醒,你该重构代码了。

1、最常用的手段之一:Extract Method(提炼函数)

① 无局部变量

② 有局部变量,但目标方法仅读取它

③ 有局部变量,并且目标方法有对其进行赋值

IDEA 中选中代码,然后使用快捷键 Extract Method

Ctrl + Alt + M

重构前的代码

重构后的代码

2、Template Method 设计模式

① 适合场景

a.一次性实现一个算法的不变部分,并将可变的行为留给子类来实现。

b.各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。

c.需要通过子类来决定父类算法中某个步骤是否执行,实现子类对父类的反向控制

② 实例

创建一个抽象模板结构(AblstractClass)

创建一个具体模板(ConcreteClass)

输出结果:

欢迎关注 @Python大星 ,一个会点 Python 的 Java 程序员。文章如有问题,你倒是说啊,喜欢的话,一键三连。

@Python大星 | 文

设计模式重构代码_Duplicated Code (重复代码)如何处理?相关推荐

  1. Java项目校园兼职平台(三层架构+设计模式重构版)(含代码)

    一.与上一版的区别 使用了单例模式.外观模式.模板方法模式 和 druid连接池 相较于项目二,提供了又一个新的角色,发布兼职人员.他的角色就相当于公司的招聘人员,可以根据公司需求,去这个平台上发布自 ...

  2. idea 检测 重复代码_IDEA关掉重复代码波浪线

    取消IE提示下载安全提问 需求:在企业访问内部WEB系统下载文件时,IE总会弹出安全提问,征得用户同意后弹出下载保存框.现用户需要点击下载后,直接弹出下载保存框. 方案:这涉及IE安全定义问题,进行相 ...

  3. 【重构】 代码的坏味道总结 Bad Smell (一) (重复代码 | 过长函数 | 过大的类 | 过长参数列 | 发散式变化 | 霰弹式修改)

    膜拜下 Martin Fowler 大神 , 开始学习 圣经 重构-改善既有代码设计 . 代码的坏味道就意味着需要重构, 对代码的坏味道了然于心是重构的比要前提; . 作者 : 万境绝尘 转载请注明出 ...

  4. 无码系列5.1 代码重构 消除重复代码

    1 前言 本文可以视为对ThoughtWorks高级顾问yuanyingjie关于"正交四原则"策略"消除重复"的"个人解读". 如有谬误, ...

  5. 代码重构技巧之重复代码

    在我们项目开发的过程中,有时写着写着顺手了,对于一些业务代码,重复编写,导致后来需要修改的时候,得整个项目到处找这些重复代码,这真是一件糟糕的事. 一.重复代码 定义 重复代码并不是指的完全一模一样的 ...

  6. 让开发自动化持续重构 --使用静态分析工具识别代码味道

    系列内容: 此内容是该系列的一部分:让开发自动化 在过去的几年里,我曾看过很多项目的大量源代码,从精美的设计到像是用胶带绑定到一起的代码.我写过新的代码也维护过其他开发人员的源代码.我喜欢编写新的代码 ...

  7. 10个重构小技巧,去掉代码中的S味

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 | https://urlify.cn/yme6Vz 本次我 ...

  8. Code Review 代码评审

    代码评审是指在软件开发过程中,对源代码的系统性检查.通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平. Code Review是轻量级代码评审,相对于正式代码评审,轻量级代码评审所需要的 ...

  9. IntelliJ IDEA 自动导入包 关闭重复代码提示

    1.  IDEA自动导入包 IDEA可以设置自动导入引用包如下图设置, 但是对于同名包扔需要使用快捷键: Alt + 回车 来引入. 红框中标记了两个设置: 勾选1:  IntelliJ IDEA 将 ...

最新文章

  1. javaMP3转pcm 百度语音识别
  2. 【跃迁之路】【473天】刻意练习系列232(2018.05.24)
  3. R语言--如何退出terminal下的环境
  4. 全球变暖java_第九届 蓝桥杯 JavaB组 全球变暖
  5. 编程范式,程序员的编程世界观(转)
  6. 创新创业计划书_创践——大学生创新创业实务 ——如何撰写一份优秀的商业计划书...
  7. mysql 横向排列,mysql横向转纵向、纵向转横向排列的方法
  8. 部署thinkphp5框架的php,三、部署ThinkPHP5框架
  9. LeetCode 452 用最少数量的箭引爆气球
  10. PHP FTP操作类( 上传、拷贝、移动、删除文件/创建目录 )
  11. 数字信号处理----数字上变频和下变频都FPGA实现
  12. bing翻译API调用(java版本)
  13. scratch做了个病毒大战的游戏,欢迎朋友们试玩,多提意见
  14. 手把手教你sql触发器的使用
  15. 《2013小企业会计准则》的适用范围
  16. 回文数字 观察数字:12321,123321都有一个共同的特征,无论从左到右读还是从右向左读;都是相同的。这样的数字叫做: 回文数字。 本题要求你找到一些5位或6位的十进制数字。满足要求: 该数字
  17. Verilog——7段数码管译码器
  18. 为知笔记登录提示“打开数据库失败”解决方法
  19. java 查询微信支付订单
  20. 概率统计Python计算:自定义离散型分布

热门文章

  1. Python类属性和实例属性分别是什么?
  2. python输入hello*3_python入门到实践-Hello Python3
  3. open cv提取图片特征值_基于VGG16网络提取Flicker8K数据集图像特征
  4. Python也有做大型游戏的潜力?原来我们小看了Python,无所不能!!
  5. JavaScript实现使用DisjointSet 检测无向循环算法(附完整源码)
  6. OpenCASCADE :VTK集成服务(VIS) 之使用高级 API
  7. wxWidgets:wxStatusBar 示例
  8. wxWidgets:wxUpdateUIEvent类用法
  9. boost::spirit模块利用 std::tuple 将多个属性包装成一个的测试程序
  10. boost::detail::atomic_count相关的测试程序