使用快捷键,快到极致

前段时间曾经写过一篇文章,《优秀程序员无他-善假于物也》。其中谈到一点是优秀的程序员必须要能灵活的掌握常用软件的快捷键。对于程序员来说,每天使用时间最长的软件恐怕就是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,一经查实,立即删除!

相关文章

java反射对象赋值_Java反射详解

反射(Reflection)能够让运行于 JVM 中的程序检测和修改运行时的行为。Class类提供了以下方法四个public方法,用于获取某个类的构造方法:Constructor getConstructor(Class[] params)// 根据构造函数的参数,返回一个具体的具有public属性的构造…

Oracle装置后果

来历:网海拾贝 本日未来诰日装置Oracle后,出现了两个后果。 经过过程SQL Plus不竭无法连接长途数据库,提醒错误ORA-12514:TNS:监听过程不能解析在连接描绘符中给出的SERVICE_NAME。 厥后缔造用可视化的Net Configuration Assistant东西对监听…

Java Hashtable hashCode()方法及示例

Hashtable类hashCode()方法 (Hashtable Class hashCode() method) hashCode() method is available in java.util package. hashCode()方法在java.util包中可用。 hashCode() method is used to return the hash code value for this object in this Hashtable. hashCode()方法…

C---蝉、蜻蜓、蜘蛛

【问题描述】 已知 腿/条翅膀/对蝉61蜻蜓62蜘蛛80 现有小虫n只,共有X条腿和Y对翅膀,问蝉、蜻蜓、蜘蛛各有多少只?请使用循环的知识解决,数据确保有解。 【输入形式】三个用空格隔开的整数,依次为n、X、Y 【输出形式】…

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

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

python如何操作oracle数据库_python操作oracle数据库

搜索热词下面是编程之家 jb51.cc 通过网络收集整理的代码片段。编程之家小编现在分享给大家,也给大家做个参考。# -*- mode: python; coding: utf-8 -*-## python operate oracle,contain insert、delete、update、select.## author liyulin# date 2014-11-07import…

可能用得上的jquery 插件

Chosen (github) 是一个强大的增强下拉选择框的插件,支持自定义css样式。同时你可以使用ajax增加一些回调函数,插件会给hidden input复制,这样你可以在提交表单的时候获得正确的值。 Turn.js 是一个 JavaScript 库,使您的网页内容…

草根创业回忆录二: 都选择的是什么人?

草根创业回忆录二: 都选择的是什么人? 前言:选合伙人和投资就像在选女朋友一样,要谨慎,甚至有时候宁缺毋滥。 曾经以为有了钱,就会找到需要的人,后来发现不是这样的。 也以为,随便拉几个关系好的…

float.equals_Java Float类equals()方法与示例

float.equals浮动类equals()方法 (Float class equals() method) equals() method is available in java.lang package. equals()方法在java.lang包中可用。 equals() method is used to check equality or inequality of this Object against the given Object or in other wo…

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…

EF Code First 简单的示例

一对多&#xff1a; public class Category {public Category(){Id GuidComb.GenerateComb();}public Guid Id { get; set; }public string Name { get; set; }public string Description { get; set; }public virtual IList<Topic> Topics { get; set; } }public class…

线程同步 - 整理

线程同步机制为线程协同工作而设计&#xff0c;windows系统中有多种机制可以用于线程同步&#xff0c;最常用的有下面几种&#xff1a; 互斥对象(Mutex)时间对象(Event)信号量(Semaphore)临界区(critical section)可等待计时器(waitable Timer)同步过程中两个重要的概念是同步对…

智能车复工日记【N】:图像处理——环岛debug记录(持续更新)

博主联系方式: QQ:1540984562 QQ交流群:892023501 群里会有往届的smarters和电赛选手,群里也会不时分享一些有用的资料,有问题可以在群里多问问。 Debug记录 代码以及思路整理:系列文章4.10号更新5.4号更新5.5号更新代码以及思路整理: 【智能车Code review】——环岛的判…

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

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

两倍---C++

【问题描述】给定n个不同的正整数&#xff0c;你的任务是计算这些数里面有多少个数对满足&#xff1a;数对中一个数是另一个数的两倍&#xff0c;比如给定1 4 3 2 9 7 18 22&#xff0c;得到的答案是3&#xff0c;因为2是1的两倍&#xff0c;4是2的两倍&#xff0c;18是9的两倍…

java bitset_Java BitSet cardinality()方法与示例

java bitsetBitSet类cardinality()方法 (BitSet Class cardinality() method) cardinality() method is available in java.util package. cardinality()方法在java.util包中可用。 cardinality() method is used to return the cardinality (i.e. the number of bits is set t…

LeetCode: Merge k Sorted Lists

自己写的太复杂了&#xff0c;一开始想的是给开始的lists头们排序&#xff0c;然后从这个序列的第一个抽出来&#xff0c;然后再重新用二分法进行排序&#xff0c;不过这个方法large超时了&#xff0c;看了网上的发现还是用很土地方法用一个for循环从前两个开始merge到最后&…

JAVA 取得当前目录的路径

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

golang mysql curd_Go 语言操作 MySQL 之 CURD 操作

本文转载于SegmentFault社区作者&#xff1a;Meng小羽MySQL 是目前开发中最常见的关系型数据库&#xff0c;使用 Go 语言进行操控数据库需要使用 Go 自带database/sql和驱动go-sql-driver/mysql来实现。创建好 Go 项目&#xff0c;需要引用驱动依赖&#xff1a;go get -u githu…