使用快捷键,快到极致

前段时间曾经写过一篇文章,《优秀程序员无他-善假于物也》。其中谈到一点是优秀的程序员必须要能灵活的掌握常用软件的快捷键。对于程序员来说,每天使用时间最长的软件恐怕就是IDE(Integrated Development Environment)了。如果你是C#的程序员,那么就基本非Visual Studio莫属了。而如果你是Java的程序员,那么eclipse,myeclipse或者Intellij都有人用之。如果你是Ruby等动态语言的程序员,那么Vim、Emacs、RubyMIne…有太多的选择可以成为你的IDE。

下面我就用Intellij来给大家演示下使用快捷键是多么的强大,能提高多大的效率。(以下所使用的快捷键在eclipse中基本都有对应的快捷键。)

大家先看一个简单的类。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class BeanConfig {
    private String name;

    private String className;

    public BeanConfig(String name, String className) {
        this.name = name;
        this.className = className;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }
}

这是一个很普通的Value Object。创建这个类并写完这些代码需要多长时间那?不同人会给出不同的答案。使用快捷键与不使用快捷键有天壤之别。

不使用快捷键,你需要手写全部的代码。而使用快捷键,最多你只需要敲半行代码。这半行代码就是构造函数里的那两个参数String name, String className

下面我就一步步的演示如何使用Intellij的快捷键来创建这个Value Object。

  • 使用Ctrl+1切换到project列表项,使用使用上下箭头键选择放置这个Value Object的package。

  • 使用Alt+Insert键调出创建对话框,选择new class并回车。

    INew.png

    在弹出的Create New Class对话框中键入类名,并回车。

    ICNC.png

    最后生成如下的代码。

1
2
public class BeanConfig {
}
  • 按esc键将光标移动到editor中,按下alt+Insert键调出Generate对话框,选择Constructor项并回车。这样会生成一个无参数的构造函数。

IGenerate.png

这是生成的代码。

1
2
3
4
public class BeanConfig {
    public BeanConfig() {
    }
}
  • 光标移动到构造函数名后的小括号内,敲入这样的代码String name, String className

此时代码如下。

1
2
3
4
public class BeanConfig {
    public BeanConfig(String name, String className) {
    }
}
  • 光标保持在构造函数的参数列表中,使用alt+Enter快捷键,选择Create Fields For Constructor Parameters条目,然后回车。

ICF.png

在弹出的对快框中使用shift+下箭头选中这两个field并回车。

ICCP.png

生成的代码如下。

1
2
3
4
5
6
7
8
9
public class BeanConfig {
    private final String name;
    private final String className;

    public BeanConfig(String name, String className) {
        this.name = name;
        this.className = className;
    }
}
  • 删除nameclassNamefinal修饰符。最快捷的方法是光标移动到final处,按Ctrl+W键选中整个字符,然后按Delete键。

此时代码如下。

1
2
3
4
5
6
7
8
9
public class BeanConfig {
    private String name;
    private String className;

    public BeanConfig(String name, String className) {
        this.name = name;
        this.className = className;
    }
}
  • 光标移动到任意一个field处,使用alt+Insert弹出Generate对话框,选择Getter and Setter条目按回车。

IGGAS.png

在弹出的Select Fields to Generate Getters and Setters对话框中,使用shift+下箭头选中两个field,按回车。

ISFGG.png

最终代码生成。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class BeanConfig {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getClassName() {
        return className;
    }

    public void setClassName(String className) {
        this.className = className;
    }

    private String className;

    public BeanConfig(String name, String className) {
        this.name = name;
        this.className = className;
    }
}

整个过程中不需要动一下鼠标,这意味着你的双手根本不需要离开键盘。使用快捷键比不使用快捷键效率至少提高5倍,而且还不会出错。最重要的一点是它能让我们的大脑从这些繁琐的体力劳动中解脱出来,从而集中到更需要发挥脑力劳动的地方。

其实灵活使用IDE的快捷键是一门大学问,我在和同事pair的过程中经常能从他们身上学到一些使用IDE的快捷键的妙处。以后有时间会专门整理出来share给大家。

转载于:https://www.cnblogs.com/huang0925/archive/2013/04/06/3002685.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/378638.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

轮廓(查找和绘制轮廓、轮廓的表达与组织、轮廓的特性)

目录1、轮廓的定义2、如何在图像中找到轮廓opencv自带的查找轮廓函数:findContours()3、轮廓的表达方式1.顶点的序列2.Freeman链码4、轮廓之间的组织方式5、轮廓的特点(这部分可以展开来详细探讨,这里不做过多解释)6、轮廓的匹配7、绘制轮廓d…

01-基本配置与测试

一、开发环境 使用的是Anaconda 3,其中Python版本为3.6.3 首先,在Anaconda下的Scripts文件夹下打开命令框 使用pip install -U selenium安装selenium 打开Jupiter Notebook,输入from selenium import webdriver进行测试 不报错即安装成功 …

Opencv——查找并绘制凸包、凸包与轮廓的关系

定义 给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型。 理解物体形状或轮廓的一 种比较有用的方法便是计算一个物体的凸包,然后计算其凸缺陷(convexity defects)。 检测凸包 opencv自带函数:convexHull() 参数解释&a…

java接口并发衡量_java 后端设计高并发接口总结

如何设置高并发接口一、并发队列的选择二、请求接口的合理设计三、高并发下的数据安全3.1 超发的原因3.2 悲观锁思路3.3 FIFO队列思路3.4 乐观锁思路一、并发队列的选择Java的并发包提供了三个常用的并发队列实现,分别是:ArrayBlockingQueue、Concurrent…

JAVA 取得当前目录的路径

在写java程序时不可避免要获取文件的路径...总结一下,遗漏的随时补上 1.可以在servlet的init方法里 String path getServletContext().getRealPath("/"); 这将获取web项目的全路径 例如 :E:/eclipseM9/workspace/tree/ tree是我web项目的根目录 2.你也可以随时在任意…

02.1-元素定位(find)

常用的一些方法 一、导包 from selenium import webdriver二、打开火狐(空白页) b webdriver.Firefox()三、跳转到指定的网站 b.get(https://www.baidu.com/)四、将浏览器页面最大化 b.maximize_window()五、通过F12可查看当前的贴吧为超链接形式 …

快速傅里叶变换(FFT)——按时间抽取DIT的基

目录【1】前言1、DIF计算量2、利用性质改善【2】公式推导1、N 到 2*N/2a、分解原序列b、分解后的DFT变换c、一系列化简操作之后d、蝶形信号流e、计算量总结2、N/2 到 2*N/4a、分解X2(k)序列b、蝶形信号流(2列)3、N/4 到 2*N/8a、蝶形信号流(3…

快速傅里叶变换(FFT)——按频率抽取DIF的基

目录【1】回顾DIT【2】算法原理【3】运算特点【1】回顾DIT https://blog.csdn.net/qq_42604176/article/details/105559756 【2】算法原理 设序列点数:N2^M,M为正整数。将输入序列按照前一半、后一半分开。(并非按照奇偶分) 由于&#xf…

莫比乌斯函数---C++

【问题描述】 莫比乌斯函数,数论函数,由德国数学家和天文学家莫比乌斯(Mobius,1790-1868)提出。梅滕斯(Mertens)首先使用μ(n)作为莫比乌斯函数的记号。而据说,高斯(Gauss)比莫比乌斯早三十年就曾考虑过这个函数。莫比乌斯函数在数…

Opencv——findContours函数再探(由轮廓联想连通域)

目录关于调参的一些思考分析图像的一些角度面积、周长、矩形度、圆形度、宽长比例1:找出汽车轮毂圆孔(从轮廓和连通域两个角度)例2:找出芯片中间正方形物体例3:桌面上橘色物体总结关于调参的一些思考 合理的参数设置&…

modelsim 编译 xilinx库

1.为单个工程加入库 在某一个目录建立工程 然后 vlib unisim vcom -work unsim *.vhd 然后就加入了unisim库 如果是windows的话,工程文件mpf应该是记录了这个库的信息,所以重新打开这个工程时,依然有这个库 linux,不用gui界面…

php 载入css就可以显示,如何在进度条加载后显示页面

1.思路:加入很多图片,以延迟加载时间,实现加载完后显示图片。定义一个外层p,覆盖住图片,在内层p中引入加载时显示的图片,让内层p居中在页面上,利用setInterval定时器设置3秒后将外层p隐藏&#…

如何获取轮廓(连通域)的面积、周长、矩形度、圆形度、宽长比、周径比等形状描述符?

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录前言1、轮廓面积获取函数2、轮廓周长获取函数3、轮廓圆形度计算4、矩形度计算…

01-基础部分

一、tensorflow和opencv测试 import tensorflow as tf import cv2hello tf.constant(hello tensorflow) session tf.Session() print(session.run(hello))print(hello opencv)运行效果如下: 二、基础部分 1、opencv基础 代码三部曲: 1、引入Open…

网络和通信 - Silverlight 中的 HTTP 通信和安全

Silverlight 支持几种使用 HTTP/HTTPS 的方案。虽然可以使用多种方式和技术执行 HTTP 调用,但是下表描述的是针对这些 HTTP 通信方案的建议方法 执行 HTTP 调用的选项 确定应由浏览器还是客户端来执行应用程序的 HTTP 处理后,应在创建任何 Web 请求之前指…

WT2605C高品质音频蓝牙语音芯片:外接功放实现双声道DAC输出的优势

在音频处理领域,双声道DAC输出能够提供更为清晰、逼真的音效,增强用户的听觉体验。针对这一需求,唯创知音的WT2605C高品质音频蓝牙语音芯片,通过外接功放实现双声道DAC输出,展现出独特的应用优势。 一、高品质音频处理…

角点检测(Harris角点检测法)

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录原理讲解【1】为何选取角点作为特征?【2】角点的定义:…

02-图像的几何变换

一、图片缩放 imageInfo:图片宽、高、通道个数等 缩放: 等比例缩放:宽高比不变 任意比例缩放:图片拉伸、非拉伸 窗体大小 实现步骤: 1,完成图像的加载,拿到图像的数据信息 2,图片的宽…

微机原理——8086中断类型以及中断向量表、中断响应、中断返回

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 目录先验知识回顾控制寄存器回顾1、8086中断类型1、外部可屏蔽中断2、外部不可屏蔽…

资料整理-工具篇

* 代码利器 Resharper 作为一个C#er,非常感谢有Resharper这样的代码利器。在VS系列的IDE中,使用Resharper后,你会发现,原来写代码也可以是一种享受! 1. 首先,下载Resharper。下载地址:http://ww…