使用IntelliJ IDEA开发前的基本设置,有助于提高开发效率
2、界面字体大小设置
File菜单->Settings->Appearance->Override default fonts by(not recommended):
Name:宋体(建议选择中文,防止出现中文乱码。起初的中文字体名称为空白,只要把列表框拉到最后随便选取一个空白然后应用,中文字体名便出现了,再选择喜欢的字体。)
Size:18
3、代码字体大小设置
File菜单->Settings->Editor->Color&Font->Font
首先点击“save as...”保存为自定义字体设置,然后修改大小Size:18
4、解决代码中文乱码
点击状态栏右下角GBK-选择UTF-8,然后根据情况选择“reload”或者“convert”。
5、代码显示行号
File菜单->Settings->Editor-Appearance :show line numbers
6、设置IntelliJ IDEA智能提示忽略大小写
Editor-Code Completion页里有个Case sensitive completion,可以设置只第一个字母敏感、完全敏感或者不敏感。
7、添加自定义代码补全
File菜单->Settings->Live Templates
先把“By default expand with Tab”改为"Space",这样更符合VS习惯。
点击右侧的“+”新建一个TemplateGroup,名称为user。
然后在user分组下添加自定义的LiveTemplate:
for
- for(int $INDEX$ = 0; $INDEX$ < $LIMIT$; $INDEX$++) {
- $END$
- }
if
- if ($END$) {
- }
st
- String
try
- try {
- $END$
- } catch (Exception e) {
- e.printStackTrace();
- }
System.out.println($END$);
while
while ($END$) {
}
8、更改文件自动注释,默认生成的文件注释为:
- /**
- * Created by ${USER} on ${DATE}.
- */
更改方法:
打开菜单:File-Settings打开选项设置,找到File and Code Templates--Includes--File Header,修改为:
- /**
- * Created by sing on ${DATE}.
- * desc:
- */
选择Templates-class,修改:
- #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
- #parse("File Header.java")
- public class ${NAME} {
- }
为:
- #if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
- #parse("File Header.java")
- public class ${NAME} {
- private static final String TAG = "${NAME}";
- }
使得创建类的时候自动创建TAG。
怎样调出javadoc注释视图
View
| Quick
Documentation or the corresponding keyboard shortcut
快捷键是Ctrl + Q
IntelliJ中,除了IDE自带的标准模板,它还具有强大的定义新模板的功能。使用过Eclipse(MyEclipse)的程序员对定义模板并不会陌生,
也一定从中受益。其实,IntelliJ也具有相同的功能。且不去比较哪个IDE功能更强大。很多新使用IntelliJ的人,和我一样,会因为IntelliJ复杂
的操作而头疼,不知道从哪里入手。加上国内关于IntelliJ的介绍少之又少,相比Eclipse,上手IntelliJ要复杂的多。本篇是在阅读了以下博文后
记录下来的Live Template的操作:
http://www.javacodegeeks.com/2011/11/whats-cool-in-intellijidea-part-ii-live.html
首先,Ctrl+J快捷键组合用于获得相关模板的列表(对自定义模板和系统模板都起作用)。一般这些缩写都是模板关键词首字母的组合。
在Settings -> Live Templates -> By default expand with选项,我们可以设置扩展提示键(default expansionkey),默认的为
Tab。这里设置为Space,因为Space键更符合自己的习惯。当然,你可以不作改动,或者设成其他系统提供的Key。
那么,怎样去定义自己的模板?
首先,我们先来定义一个我们常用的模板。由于一些原因,IntelliJ并没有提供try-catch模板。它只提供了把一行语句用try-catch代码块
想实现一个空try-catch代码块的时候,却需要手动输入。
Settings(Ctrl+Alt+S) -> Live Templates -> Add -> Edit Live Template
制作try-catch模板,我们只需要输入Abbreviation和try-catch代码,选中Java code选项。
try-catch模板非常简单,它只有一些给定的关键字。IntelliJ提供的功能远不止如此,例如,把光标定位到某个位置。
如果我们想添加一个throwable类型在catch中,我们可以添加一个($EXCEPTION$)并通过IntelliJ提供的一个特殊的函数来定义它的值。
例如,我希望输入一个java.lang.Exception类的子类型,因此我使用了subtype(<type>)函数。
在上图中,你可能发现我使用了$END$,但是却没有编辑窗口,这是因为$END$是预定义的变量,它用把光标最后定位到这个位置。
现在,我们来试一下输入try,然后按space键,我们可以看到扩展出的模板。
首先,光标被定位到catch括号中,来选择exception类型。Enter,光标将会返回到try代码块中。
我们可能会需要进一步调用exception方法,通过模仿Ctrl+Space来使用一个特殊的方法。这是一个可选的例子,我们假设现在需要这么
做。
定义一个$METHOD$,在Edit Live Template窗口中赋值为complete()函数。
一旦exception类型被选中,将会自动的产生exception实例的列表提示。
这些都是可用于Live Templates为变量赋值的方法。更值得一提的是,这种方法不仅是用于Java语言,其他语言也同样可以,例如
JavaScript, HTML, Groovy Code。
给语句添加模板?
IntelliJ的Live templates提供其他类型的模板——surrounding templates。这意味着你可以选择一行代码块(甚至只是光标的一个位置)
然后按Ctrl+Alt+T快捷键,就会弹出建议的模板。
定义一个surround templates和normal templates的操作基本一样。在Template text中输入$SELECTION$。
模板带给我们的好处很明显:约束+重用。通过模板我们可以把变与不变分离,重用不变,变可以交给子类/通过回调机制完成,而且还具有约束作用,防止乱写代码。
那我们应该利用好这个技术,加速项目的开发速度。接下来我们看看如何利用模板技术来加速我们的开发速度。
接下来,我将介绍下如何利用模板技术加速开发速度,但不会接受如何利用模板技术开发可复用的代码;本文以IntelliJ IDEA为原型介绍:
1、代码生成
2、Live Template
3、File and code Templates
4、自动代码生成
1、代码生成
如我们要求 i + j,可以先:
int k = add(i, j);
然后按Alt+enter自动生成相关代码;而不是自己去敲;其会自动生成相应的变量和方法体;如图
1、按Alt+Enter弹出如创建方法/创建本地变量的提示
2、可以根据生成的模板方法,修改模板参数;
3、还有典型的如生成构造器、getter/setter等,按Alt+Insert得到如下图:
比如在生成构造器时,可以选择相关字段,会自动生成相应的赋值操作:
4、Ctrl+O/Alt+Insert生成覆盖方法;ctrl+I/Alt+Insert生成实现方法的
5、选中代码后,Ctrl+Alt+T弹出Surround with,生成包围代码的的代码,如if/else:
6、在如JSP标签页面中,按Ctrl+Alt+J,生成环绕的标签:
等等。。具体可以参考jetbrains.官网的《Generating Code》部分。
2、Live Template
如果用过idea,肯定用过如输入 psvm 然后按Tab键,会自动生成public static void main方法,使我们少输入很多字符。这个功能在idea中叫做Live Template;接下来让我们看看有哪些Live Template和如何自定义Live Template。
最常见的功能:
1、psvm----->public static void main(String[] args) {}
2、psfi ------->public static final int
3、ifn 会自动生成如下图
……
大家可以通过 File--->Settings---->Live Templates找到所有模板,如:
如 lazy 生成延迟初始化的代码,inn生成if (** != null)
如fori --->for (int j = 0; j < ; j++) {}
List list; itli ----> for (int i = 0; i < list.size(); i++) { Object o = list.get(i);}
等等,这个可以去Settings里查看。
接下来我们看看如何自定义自己的Live Template:
1、输入“缩写前缀”,即在代码中输入的前缀;
2、模板文本;
3、Change:选择在哪使用;
接下来在Java文件中,输入test会生成 hello world;
此处看到 $END$ 这种变量,接下来解释下:
1、格式是$变量名$
2、$END$ : 表示展开模板后光标停留的位置,比如我们的test,生成模板后,光标停留在hello world 前边;
3、$SELECTION$ : 表示对选中的代码应用模板;如我们定义test为:
如
此处选中“int i = 1;”,然后按Ctrl+Alt+T 弹出“Surround With” 然后输入test前缀,自动生成:--->hello int i = 1; world
还有如 输入 if for等前缀 按Ctrl+Shift+Enter会自动生成 带()和{} 的形式,非常方便。
如果想定义自己的变量,可以直接点击在编写模板时,模板文本右边的:“Edit variables” 编写:如得到返回的变量,方法名,类名等等。
大家可以参考官网的《Live Templates》。
3、File and code Templates
到此我们使用的都是代码块级别的模板,在工作中我们常见的还需要:
1、生成如Copyright头;
2、生成类头Javadoc,如用户、时间、版本;
3、创建如spring配置文件,每次可能都是从别的地方复制一份;
4、如我们做企业项目时,都先写一个CRUD的DAO、Service、Controller等等,但是几乎每一个模块都是类似的,但是我们每次可能都要重复写一遍;
因为IDEA使用的是velocity模板,所以语法相对来说是比较灵活的,而Eclipse看了下是自创的,所以在创建时没有IDEA灵活。
File---->Settings--->File and Code Templates 打开模板设置页面
3.1、给Class生成Copyright头
1、创建Include文件
1、首先选择Includes标签,然后点击创建创建一个;
2、接着Name处输入名字;
3、Extension部分输入扩展名;
4、文件正文;
此文件包含了我的copyright
2、添加到类模板中
1、 首先选中Class;
2、在页面顶部使用 @parse("Coyright.java")把刚才写的文件包含进来
接着新建一个Java Class,在页面的顶部会出现这个copyright;
3.3、自定义Service模板
1、首先File--->Settings---->File and Code Templates进入模板设置页面
2、创建模板,如图所示
1、点击Templates标签,点击新增按钮
2、Name处输入名字
3、Extension处输入扩展名
4、输入模板正文,此处我们可以使用${NAME}和${PACKAGE_NAME}分别获取输入的文件名和包名
5、语法是velocity语法,所以很强大,按理说很复杂的需求也可以实现
3、新增Class
3.1、在包处Alt+Enter弹出新建列表,选择Java Class
3.2、 接着在弹出的界面中输入 Service的前缀,并选择Service类型:
4、接着类就创建好了:
- /**
- * Copyright (c) 2005-2012 https://github.com/zhangkaitao
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- */
- package com.sishuok.es.maintain.keyvalue.service;
- import com.sishuok.es.common.inject.annotation.BaseComponent;
- import com.sishuok.es.common.service.BaseService;
- import com.sishuok.es.maintain.keyvalue.entity.HelloValue;
- import com.sishuok.es.maintain.keyvalue.repository.HelloRepository;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- /**
- * <p>User: Zhang Kaitao
- * <p>Date: 13-6-20 下午4:31
- * <p>Version: 1.0
- */
- @Service
- public class HelloService extends BaseService<Hello, Long> {
- @Autowired
- @BaseComponent
- private HelloRepository helloRepository;
- }
非常方便。
除此之外,我们还可以定义如 jsp模板、html模板、配置文件模板等等,消除开发中的重复工作。
但是此种方式的主要缺点就是:一次只能一个文件。比如,我们生成Service时,其实DAO、Contoller等最好也自动生成。 接下来就需要自动代码生成了。
4、自动代码生成
估计很多朋友都使用/开发过代码生成器;其实开发一个简单的代码生成器花不了多长时间,核心指导思想是:变与不变分离:
- 不变的是结构;
- 变的是包名、类名及实体数据。
所以根据这个思想可以很容易写一个代码生成器,可以按照如下步骤完成:
- 1、自动生成一个模块的DAO、Service、Controller;
- 2、根据数据库自动生成一个模块的Entity、DAO、Service、Controller;
- 3、自动生成一对一、一对多关系的模块代码;
- 4、自动生成公司中常用的代码的模块代码,如树;
目前见到的主要有这些类型的自动代码生成。
代码生成的模板文件可以使用纯文本(即纯粹的字符串替换),更高级点的可以使用如velocity这种模板语言,更加强大。
如果有朋友不会写代码生成器,可以先建一个Example的示例代码,接着做复制、粘帖、修改实体名等等完成,估计30秒钟也能出一个基本的模块代码。但是如果交给代码生成器,速度更快。
比如笔者刚开发的新项目,还没时间开发代码生成器,就写一个一些示例,这样如果写新模块就直接复制一份改改即可,尤其树这块节省不少时间,点击showcase前往查看。
代码生成器也不是万能的,如果你做过互联网项目,不像企业应用那样有许多的增删改查,所以这个时候,纯粹生成CRUD的代码生成器没有任何意义。
到此我们介绍完了模板,使用模板能提升不少开发速度,但是模板不是万能的,只有发现有些代码是由:变与不变组成,那我们就可以把不变的做成模板,变的部分通过占位符(即变量)填入。
使用IntelliJ IDEA开发前的基本设置,有助于提高开发效率的更多相关文章
- Eclipse有助于提高开发速度的快捷键
用Eclipse已经很长一段时间了,自己常用的几个快捷键也已经很熟,但还是有一些自己不经常在开发中使用,但非常使用的快捷键,记录下来,以后利用来提高开发效率. 1.ctrl + shift + r ...
- IntelliJ Idea 常用10款插件(提高开发效率)
出自:https://blog.csdn.net/weixin_41846320/article/details/82697818 插件安装方式: 1.Background Image Plus 这款 ...
- .Net Core ORM选择之路,哪个才适合你 通用查询类封装之Mongodb篇 Snowflake(雪花算法)的JavaScript实现 【开发记录】如何在B/S项目中使用中国天气的实时天气功能 【开发记录】微信小游戏开发入门——俄罗斯方块
.Net Core ORM选择之路,哪个才适合你 因为老板的一句话公司项目需要迁移到.Net Core ,但是以前同事用的ORM不支持.Net Core 开发过程也遇到了各种坑,插入条数多了也特别 ...
- 成吨提高开发效率:Intellij Shortcuts精简子集与思维模式
在线精简cheatsheet备查表:intellij.linesh.twGithub项目:intellij-mac-frequent-keymap Intellij的快捷键多而繁杂,从官方推荐的key ...
- 从零开始编写自己的C#框架(2)——开发前准备工作
没想到写了个前言就受到很多朋友的支持,大家的推荐就是我最大的动力(推荐得我热血沸腾,大家就用推荐来猛砸我吧O^-^O),谢谢大家支持. 其实框架开发大家都知道,不过要想写得通俗点,我个人觉得还是挺吃力 ...
- Android驱动开发前的准备
最近看了一些Android驱动开发前需要知道的资料,收获很多,接下来就谈谈我自己的一些心得体会. Android在近几年时间发展迅速,已经成为智能手机操作系统的老大.不过,因为Android原生的代码 ...
- 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发
[原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文 http: ...
- 有助于提高你的 Web 开发技能的7个模式库
正如语言风格指南一样,模式库有两个主要用途.首先,是它们提供了一组编码或设计标准,Web 开发团队可以在整个网站中应用,有助于保持一致的编码实践和外观:其次,对于要学习网页设计最佳实践来说是宝贵的财富 ...
- 那些在学习iOS开发前就应该知道的事(part 2)
英文原文:Things I wish I had known before starting iOS development—Part 2 http://www.cocoachina.com/ios/ ...
随机推荐
- Linux之我最常用的20条命令
Linux之我最常用的20条命令 玩过 Linux的人都会知道, Linux中的命令的确是非常多,但是玩过 Linux的人也从来不会因为 Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的 ...
- Node.js 博客实例(十)pv统计和留言统计
原教程 https://github.com/nswbmw/N-blog/wiki/_pages的第十章,因为版本号等的原因,在原教程基础上稍加修改就可以实现. post.js中将var post={ ...
- .NET 框架简单介绍
初学.NET肯定会有一系列的疑问,比方(下面为自己的疑问): 1) 何为. NET框架.它都包括哪些东西? 2) 程序集是什么.它是怎样在CLR(通用语言执行时)中执行的? 3) C#与VB.NET同 ...
- systemverilog中堵塞和非堵塞事件以及同步
一.SV中非堵塞事件 module test; event ev1, ev2; //belong to logic function part always@(ev1) $display(" ...
- pig 调试(explain&illerstrate)
grunt> cat t.txt kw1 2 kw3 1 kw2 4 kw1 5 kw2 2 cat test.pig A = LOAD '/user/input/t.txt' as (k:ch ...
- 自己封装js组件 - 中级
书接上文,上次弄了个基本版本的alert组件(其实就是十分钟前)但是很多功能都没有实现 没有关闭按钮 没有下面确定按钮 没有模态框 没有这那的 这次终极篇就都给它完善好弄个中级版本也是基本可用版本! ...
- 常见的DNS攻击——偷(劫持)、骗(缓存投毒)、打(DDos)
常见的DNS攻击包括: 1) 域名劫持 通过采用黑客手段控制了域名管理密码和域名管理邮箱,然后将该域名的NS纪录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民 ...
- rsync同步操作命令
在本地磁盘同步数据 将/home做个备份 # rsync -a --delete /home /backups -a 归档模式,表示以递归方式传输文件, -delete 删除那些接收端还有而发送端已经 ...
- 滑动切换Activity代码
最近需要对练习项目中的代码进行优化,发现很多代码写起来远比想象的困难很多.刚接触Android时间不长,很多东西都不能融会贯通,所以才会有这样的问题存在,当然学习中遇到的问题很有必要做个总结.想想这个 ...
- Threading and Tasks in Chrome
Threading and Tasks in Chrome Contents Overview Threads Tasks Prefer Sequences to Threads Posting a ...