使用快捷鍵,快到極致

前段時間曾經寫過一篇文章,《優秀程序員無他-善假于物也》。其中談到一點是優秀的程序員必須要能靈活的掌握常用軟件的快捷鍵。對于程序員來說,每天使用時間最長的軟件恐怕就是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.pswp.cn/news/378638.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/378638.shtml
英文地址,請注明出處:http://en.pswp.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…