liJ IDEA的快捷键是进行重构的利器,坊间盛传,完全使用IDEA快捷键重构的代码,是不需要写测试用例保护的

本文就分享一个使用IDEA抽取方法及创建新的class的方法

工具/原料

 
  • IntelliJ IDEA

方法/步骤

 
  1.  

    先来一段需要重构的代码:

    package chapter4;import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.List;

    /**

    * Created by MyWorld on 2016/3/21.

    */

    public class RefactorOperate {

    public static void main(String[] args) {

    List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));

    for (String season : seasonList) {

    System.out.println(season);

    }

    seasonList.add("Spring Rain");

    seasonList.add("vernal equinox");

    System.out.println("======================");

    for (String season : seasonList) {

    System.out.println(season);

    }

    }

    }

  2.  

    先把重复的代码中负责打印操作的代码提到一个方法中

    操作:

    如下截图所示,选中需要提取的代码

    同时Ctrl+Alt+m

    在弹出的对话框中,填入将要新生成的方法的名字,此处我们取的方法名是print

    最后点“确定”

  3.  

    现在马上就可以看到 IDEA的一个方便、强大的功能了

    从自动检测出类似代码,并提示出来

    "IDEA has detected 1 code fragment in this file that can be replaced with a call  to extracted method. would you like to review and replace it "

    此处我们选“Yes”

  4.  

    看看抽取方法后,现在代码的情况:

    package chapter4;import java.util.ArrayList;

    import java.util.Arrays;

    import java.util.List;

    /**

    * Created by MyWorld on 2016/3/21.

    */

    public class RefactorOperate {

    public static void main(String[] args) {

    List<String> seasonList = new ArrayList<String>(Arrays.asList("Spring", "Summer", "Autumn", "Winter"));

    print(seasonList);

    seasonList.add("Spring Rain");

    seasonList.add("vernal equinox");

    System.out.println("======================");

    print(seasonList);

    }    private static void print(List<String> seasonList) {

    for (String season : seasonList) {

    System.out.println(season);

    }

    }

    }

  5.  

    输入“StringUtils utils=new StringUtils();”

    IDEA肯定会提示编译不过。肯定不过了,因为Project中根本没有这个class

    把鼠标放在报错代码上,同时按“Alt + Enter”

    在弹出的菜单中选中“Create Class 'StringUtils'”

    然后回车(当然,使用鼠标直接点击也可以)

  6.  

    在弹出的“Create Class StringUtils”对话框中,确认下Destination Package的位置

    此处,我们就话在这个package下,直接点“OK”

    新Class StringUtils就创建完成了!!

你知道怎么用Idea抽取方法、创建class吗?的更多相关文章

  1. PHP mkdir 方法 创建 0777 权限的目录问题

    php 中使用 mkdir() 方法创建 0777 权限的目录: $path = './Logs/secondCheck/';if(!is_dir($path)){ mkdir($path, 0777 ...

  2. console.log的一个应用 -----用new方法生成一个img对象和document.createElement方法创建一个img对象的区别

    我用两种方法来生成img对象,第一种方法是用new方法,第二种方法是用document.createElement方法. var img1 = new Image(); var img2 = docu ...

  3. ArcGIS 网络分析[8.2] 资料2 使用IDatasetContainer2接口的CreateDataset方法创建网络数据集

    上节提及如何使用IDatasetContainer2接口访问到网络数据集,上例可以封装为一个方法. 这节就使用IDatasetContainer2接口(Geodatabase类库)的CreateDat ...

  4. Spring学习--静态工厂方法、实例工厂方法创建 Bean

    通过调用静态工厂方法创建 bean: 调用静态工厂方法创建 bean 是将对象创建的过程封装到静态方法中 , 当客户端需要对象时 , 只需要简单地调用静态方法 , 而不需要关心创建对象的细节. 要声明 ...

  5. 扩展Jquery方法创建LigerUI Grid

    ///** //*封装jquery get请求ajax //*author:叶明龙 //*time:2012-12-10 //*/ function getAjax(url, para, fn) { ...

  6. TP框架控制器和对应方法创建

    控制器和对应方法创建 控制器是MVC模式中的核心,TP默认有一个控制器:   Index控制器里面有一个操作方法:Index   我们在访问http://localhost:8080/Thinkphp ...

  7. 2016/5/6 thinkphp ①框架 ② 框架项目部署 ③MVC模式 ④控制器访问及路由解析 ⑤开发和生产模式 ⑥控制器和对应方法创建 ⑦视图模板文件创建 ⑧url地址大小写设置 ⑨空操作空控制器 ⑩项目分组

    真实项目开发步骤: 多人同时开发项目,协作开发项目.分工合理.效率有提高(代码风格不一样.分工不好) 测试阶段 上线运行 对项目进行维护.修改.升级(单个人维护项目,十分困难,代码风格不一样) 项目稳 ...

  8. Spring 工厂方法创建Bean 学习(三)

    1, 静态工厂方法创建Bean 调用静态工厂方法创建 Bean是将对象创建的过程封装到静态方法中. 当客户端需要对象时, 只需要简单地调用静态方法, 而不同关心创建对象的细节. 要声明通过静态方法创建 ...

  9. 【转载】C#的DataTable使用NewRow方法创建新表格行

    在C#的DataTable数据表格操作过程中,DataRow类表示DataTable中的数据行信息,但DataRow没有可以直接实例化的构造方法,在创建DataTable的新行的时候,不可直接使用Da ...

随机推荐

  1. js时间与时间戳互相转换

    var _time1 = Date.parse(new Date(‘2017-05-02 00:00:00’))/1000; //将设定的日期转换为时间戳 _time1 = getLocalTime( ...

  2. PAT 1019 General Palindromic Number

    1019 General Palindromic Number (20 分)   A number that will be the same when it is written forwards ...

  3. PAT 1011 World Cup Betting

    1011 World Cup Betting (20 分)   With the 2010 FIFA World Cup running, football fans the world over w ...

  4. js向一个数组中插入元素的几个方法-性能比较

    向一个数组中插入元素是平时很常见的一件事情.你可以使用push在数组尾部插入元素,可以用unshift在数组头部插入元素,也可以用splice在数组中间插入元素. 但是这些已知的方法,并不意味着没有更 ...

  5. Linux NTP服务配置 for Oracle RAC

    安装Oracle 11g RAC时,我们需要配置ntp服务.在使用虚拟机的情况下对于时钟同步方式的配置有很多种方式,可以使用vmware自带的时钟同步功能,也可以直接将本地的一个节点用作时间服务器.本 ...

  6. 有史以来性价比最高最让人感动的一次数据库&amp;SQL优化(DB &amp; SQL TUNING)——半小时性能提升千倍

    昨天,一个客户现场人员急急忙忙打电话找我,说需要帮忙调优系统,因为经常给他们干活,所以,也就没多说什么,先了解情况,据他们说,就是他们的系统最近才出现了明显的反应迟钝问题,他们的那个系统我很了解,软硬 ...

  7. Docker 容器和镜像使用

    Docker 容器使用: docker run -d -P training/webapp python app.py -d:让容器在后台运行. -P:将容器内部使用的网络端口映射到我们使用的主机上. ...

  8. vue 中router.go、router.push和router.replace的区别

    router.go(n) 这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n) router.push(location) 想要 ...

  9. Elastic-Job 介绍

    Elastic-Job是一个分布式调度解决方案,它解决了什么问题呢? 如果你需要定时对数据进行处理,但由于数据量实在太大了,一台机器处理不过来,于是用两台机器处理,第一台处理 id 为奇数的数据,第二 ...

  10. am335x system upgrade uboot nand boot(三)

    在uboot 下初始化nand,一般需要做如下工作: 第一: 配置默认从NAND boot Index: include/configs/am335x_evm.h=================== ...