Fork me on GitHub

黄博文的地盘

我是一个程序员.

使用快捷键,快到极致

| Comments

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

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

    最后生成如下的代码。

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

这是生成的代码。

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条目,然后回车。

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

生成的代码如下。

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条目按回车。

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

最终代码生成。

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给大家。

Comments