已最新版本|V6.0
JAVASE基础教程<br />——<br />目录<br/>更全面、更准确的JAVASE教程<br/>Java开发编程规约<br/><br/>已最新版本|V6.0
<br/>王道Java团队<br/>COPYRIGHT ⓒ 2021. 王道版权所有写在前面的话命名规范最基本要求基本要求特殊要求注释规范编码规范变量的使用代码格式OOP规范附:使用IDEA模板统一代码格式准备工作下载代码模板配置流程安装插件配置插件使用说明附:使用IDEA模板统一注释格式准备工具配置模板配置全局中USER配置类注释模板配置方法注释模板The End <br /><br / >如有发现错误,欢迎联系老师更新!
>(red!)
作为一名优秀的Java程序员,不仅要写出稳定且高效能够实现功能的代码,也需要注重代码的可读性和规范性。在很多时候,这些“细枝末节”反而更能体现程序员的技术底蕴,甚至也会影响软件成果的最终交付质量!可读性差、缺乏规范的代码会严重影响程序员的技术形象,也会给自己的编程、公司代码库带来很多麻烦。所以从现在开始,就要注重代码规范,本文中提到的主要是JavaSE部分的规范。
>(green!)
以下代码规范,编程规约,按照约束力从强到弱和影响程度从严重到轻微分为:
- 【强制】:任何时候、任何情况下都不打折扣,必须遵守,必须执行。不遵守会严重影响代码规范
- 【更推荐】:一般情况下都应该遵守,是更推荐的做法。遵守会显著提升代码规范
- 【参考】:仅作为参考建议,不做要求
对于规约条目的延伸信息中:
- 【说明】对规约做了适当扩展和解释;
- 【正例】给出了规约中提倡的编码和实现方式的案例;
- 【反例】说明需要提防的雷区,以及真实的错误案例
注:本文档整体参考《阿里巴巴Java开发手册》并结合王道老师实际经验,精简整理而来,具有规范性。
>(red!)
再也找不到比下面五条更基本的要求了,贯穿整个Java开发者的职业生涯,这些都一定必须要遵守!如果这些都遵守不了,立即推放弃考研吧~
>(green!)
【强制】代码中的任何命名一律不能以下划线或者美元符号开始,也不能作为结束。
说明:Java程序员的代码中是很少见下划线和美元符号的,建议即便是命名中间也尽量不要使用
反例:_name、Student_、$name、name$
【强制】代码中任何命名一律禁止使用拼音、或者拼音和英文混合的形式,更禁止直接使用中文。
说明:有些拼音已经成为国际通用的除外:beijing、alibaba、baidu、taobao等
反例:class 长方形、xuesheng [学生] 、getZuiDaZhi [最大值]
【强制】类、接口、注解等引用数据类型的名字一律使用大驼峰式。
说明:本身就是缩写的词组除外:DO、UID、VO、DAO等
正例:UserDO、Student、Test、XmlService
反例:UserDo、student、test、XMLService
【强制】方法名、变量名(包括局部变量、成员变量等)都一律使用小驼峰式。
说明:ID虽然也是缩写词组,但是很多时候大家还是喜欢将它作为一个单词用
正例:localValue、stu、test、userId
反例:LocalValue、Stu、Test、userID
【强制】包名统一使用小写,"."分隔符之间有且仅有一个自然语义的英语单词。包名一般以反写公司域名为开头,包名的单词中如有单复数的概念,统一使用单数。
说明:在涉及公司名或特殊业务需求时,可以合理使用拼音
正例:比如工具类的包名应为:com.cskaoyan.function.util(具体的工具类可以叫XxxUtils)
反例:Com.test、ceshi.gongju
>(red!)
以下要求也都是基本要求,也应当遵守。
>(green!)
【强制】在声明数组时,类型与中括号紧挨相连来表示数组,而不是将中括号放在变量名后面
说明:不要使用C语言的方式声明数组
正例:声明整型数组int[] arr;
反例:声明字符串类型数组String args[];
【强制】不要自创缩写,不要使用有歧义的缩写,不能一眼看出原意的缩写不要使用
反例:将“teacher”缩写成"tea",”condition“缩写”命名成 condi等
【更推荐】为了让代码能够直接通过类名、方法名、变量名等名称读懂,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意,即便这会使命名很长也无所谓。
说明:一句话,起名字的时候害怕不能“见名知意”,但就是不害怕很长的名字。
正例:比如工具类中有多个获取最大值的方法,要通过方法名说清楚各自的区别。
getMaxValueByArray、getMaxValueByScanner等
反例:直接统统叫getMax、定义一个方法的局部变量叫a等
【强制】常量命名全部大写,单词间用下划线隔开,命名可以很长,但是不能不清不楚。
正例:MAX_STOCK_COUNT
反例:maxValue、MAX
【强制】在 long 或者 Long 赋值时,数值后使用大写的 L,不能是小写的 l,小写容易跟数字1混淆,可能会造成误解。
说明:Long a = 2l; 写的是数字的 21,还是 Long 型的 2L?
>(red!)
在某些特殊的场景,有一些特殊的命名要求。虽然不强制要求,但是可以作为参考。
>(green!)
【更推荐】抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类的命名以它要测试的类的名称开始,以 Test 结尾;接口的实现类的命名可以用接口的名字加上后缀"impl",也可以加上前缀以示说明。
正例:AbstractPerson、StudentDaoImpl
【更推荐】布尔类型的变量,一律禁止使用is前缀的形式,否则会引起某些框架的解析错误
说明:对于成员变量isMale而言,它的get方法也会写成isMale()。对于某些RPC框架而言,会将该属性误解析为male而获取不到,这样就会抛出异常。
反例:最典型的就是定义性别时,使用“isMale”或者“isFemale”
>(red!)
注释的使用在Java中是十分重要的,在公司中写好注释,可以给人留下极好的映像。当然不好的注释,会让人背后偷偷骂你(xiao
>(green!)
【更推荐】单行注释的双斜线与注释内容之间有且仅有一个空格。
说明:阿里巴巴的规范中,单行注释要求双斜线后面必须有且仅有一个空格。坊间传闻这是阿里的脚本检查代码格式时的要求,应该不太具有实际意义。实测下来,双斜线后加一个空格,注释的阅读性会更好,大家可以模仿一下。
单行注释正例
xxxxxxxxxx
21// 这是示例注释,请注意在双斜线之后有一个空格
2String str = "hello world!";
【更推荐】所有的类都必须添加创建者和创建日期,也要指明该类的大致设计思路和用途。
【更推荐】属性和方法如有必要添加注释,必须使用 Javadoc 规范,即使用文档注释/** 内容 */的形式,禁止使用单行/多行注释的形式。
说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高
阅读效率。
说明:关于文档注释的具体格式会在文档最后详细说明,请查看完规范再翻看。
【强制】方法内部如有说明注释的需求,请使用单行或者多行注释, 放在在被注释语句的上面而不是下面。
说明:注释语句注意与代码对齐。
最后关于注释的书写,提几点规范的要求:
注释力求写得清楚明白,某些专有名词使用英文,正常的注释文字还是用中文写更好。
解释代码有两个极端,一个是完全不写注释,另一个是写一大堆啰嗦的注释。实际上合理命名,结构标准的代码是可以自解释的,所以没有必要把注释写得特别详细以至于啰嗦,只需要关键位置说明就足够了。
代码中的注释是给自己看的,有注释的代码,即使隔很长时间,也能清晰理解当时的思路;注释也是给继任者看的,使其能够快速接替自己的工作。所以写注释有两个要求:
- 第一:能够准确反应设计思想和代码逻辑;
- 第二:能够描述业务含义,使别的程序员能够迅速了解到代码背后的信息。
代码如果修改了,不要忘记修改相关的注释。 一条路正在维修而导航软件不提示,那就直接掉坑了。
>(red!)
以下规范,请根据自己的学习进度进行了解,如果看不懂可能是是还没有学到相关的内容。
>(green!)
【强制】禁止在代码中使用任何魔法值,变量都应该预先定义再使用。
说明:所谓魔法值,是指在代码中直接出现的数值(尤其是字面值),离开这段代码完全不知道它的含义。
比如下列代码:
使用魔法值举例
x1int [] array = new int[20];
2
3for (int i = 0; i < 20; i++){
4System.out.print(array[i]);
5}
代码中使用了字面值“20”,试想一下如果数组的声明和数组的遍历代码相距较远,就很难明白“20”的具体含义了。这个“20”实际上就是一个魔法值,使用魔法值会严重影响代码可读性,应该避免在程序中使用魔法值。
上述代码可改成:
去除魔法值的代码
xxxxxxxxxx
61int arrLength = 20;
2int [] array = new int[arrLength];
3
4for (int i = 0; i < arrLength; i++){
5System.out.print(array[i]);
6}
【强制】严禁在一行声明定义多个变量,尤其是类型混合定义。
正例:
禁止一行定义多个变量正例
xxxxxxxxxx
21int size;
2int[] entity;
反例:
禁止一行定义多个变量反例
xxxxxxxxxx
21int size, entity[];
2int a, b;
说明:一行定义多个变量,看起来代码更短了,但实际上这是没必要的(多写一行不要钱)而且对于开发和维护来说,也属于制造麻烦。
【更推荐】在方法体中定义局部变量时, 要在使用的时候定义,而不是一股脑先定义再隔很长代码使用。
说明:有些程序员在写方法时,喜欢上来先把自己需要的局部变量定义好,等使用它们时可能已经隔了n行代码。这种做法,一方面导致后面可能忘记定义而重复定义变量,定义死变量;另一方面局部变量的定义和使用间隔过远,也不利于理解局部变量的含义。在JDK源码或者框架源码中,可以看到都是在需要使用变量的时候创建,或者在需要使用的前几行代码申明再去创建。
正例:
局部变量使用正例
xxxxxxxxxx
201public void test(String userName){
2//中间一堆业务代码和操作
3/*
4...
5...
6...
7*/
8//通过用户名获取userAccount
9Account userAccount = AccountManager.getUserAccount(userName);
10if(userAccount == null){
11//为null的操作,抛异常
12}
13
14//再去获取名称
15String groceryStoreName = userAccount.getGroceryStoreName();
16if(groceryStoreName == null){
17//为null,抛异常
18}
19//后续一堆业务代码
20}
反例:
局部变量使用反例
xxxxxxxxxx
211public void test(String userName){
2Account userAccount;
3String groceryStoreName;
4//中间一堆业务代码和操作
5/*
6.....
7.....
8*/
9//通过用户名获取userAccount
10userAccount = AccountManager.getUserAccount(userName);
11if(userAccount == null){
12//为null的操作,抛异常
13}
14
15//再去获取名称
16groceryStoreName = userAccount.getGroceryStoreName();
17if(groceryStoreName == null){
18//为null,抛异常
19}
20//后续一堆业务代码
21}
>(green!)
【强制】任何二元、三目运算符的左右两边都应该加上空格,禁止直接连接变量。
说明:元、目指的是操作数。常见的二元运算符如赋值运算符、算术运算符、逻辑运算符等
正例:int a = 10;
反例:int a=10;
【强制】方法的参数在定义和传入时,多个参数逗号后边必须加空格,但是逗号前面不要加空格。
正例:method(args1, args2, args3)
【强制】大括号的使用约定。
如果是大括号内为空,则简洁地写成{}即可,不需要换行;
如果是非空代码块则:
- 左大括号前不换行。
- 左大括号后换行。
- 右大括号前换行。
- 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。
- 【强制】左小括号和字符之间不出现空格,右小括号和字符之间也不出现空格,而左大括号前需要空格。
- 【强制】if/for/while/switch/do 等保留字与括号之间都必须加空格。
说明:以上五点,是必须要遵守的,这样的代码才能看起来更清爽,不会看起来很臃肿。当然你可能会觉得很烦,实际上在IDEA中编程,只需要使用快捷键 Clt + Alt + L 就可以自动格式化上述格式。建议编码时,写一段就按一下该快捷键格式化代码。
在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,也要尽量避免采用下面的单行的编码方式:
xxxxxxxxxx
11if (condition) statements;
说明:在相当多的规范中,都严格禁止写这些结构时省略大括号。拿if举例,原因在于一旦大括号省略,程序员很容易忘记此时if仅能够使一行代码生效,从第二行开始的代码无论if选择结果是什么都会被执行,从而导致程序出现异常甚至严重bug,感兴趣的可以去搜一下iOS的“GoTo Fail 漏洞”。
【更推荐】单个方法的总行数不超过 80 行。(这是阿里对公司内员工的要求,但不同的公司可能要求不同,总之一个方法不要过长)
说明:包括方法签名、结束右大括号、方法内代码、注释、空行、回车及任何不可见字符的总行数不超过 80 行。
正例: 代码逻辑中要理清主干和分支,个性和共性。分支逻辑提取出来作为额外的方法,使主干逻辑更加清晰。 共性逻辑也是一样抽取出共性方法,便于复用和维护代码。
>(green!)
主要针对面向对象编程过程中,需要遵循的一些规范:
- 【强制】静态成员严禁使用对象引用访问,必须使用类名去访问。
【强制】只要是覆盖、重写自父类或接口的方法,必须使用 @Override 注解。
说明:该注解可以检查方法是否是重写自父类,避免错误的重写!
- 【强制】不要使用过时的类和方法,即被@Deprecated注解修饰的类和方法
【强制】 接口中定义的方法和属性禁止添加任何修饰符,一般来说不要接口中定义常量和实现方法
说明:接口中如果想要定义常量,肯定是与接口方法相关且是整个接口子类都会使用的基础常量。Java8之后接口允许定义default和static实现方法,但一般情况下都不建议定义,除非是对是对所有实现类都有价值的默认实现。
正例:接口方法签名 void methodName();
反例:接口方法签名 public abstract void methodName();
【强制】Object 的 equals 方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
正例:"test".equals(object);
反例:object.equals("test");
说明:如果是两个引用判断对象相等,推荐使用 java.util.Objects下的 equals 方法(JDK7 引入的工具类)
【强制】包装类型对象之间比较值的大小,一律使用equals,禁止使用“==”
说明:在-128 至 127 范围内的赋值,Integer 对象是在IntegerCache.cache 产生,会复用已有对象。
这个区间内的 Integer 值可以直接使用 “==” 进行比较值大小。
但是这个区间之外的所有数值包装类对象,都会在堆上产生,并不会复用已有对象,这是一个大坑。
建议都使用 equals 方法来比较值大小,避免考虑取值范围的问题~
在定义类的成员时:
【强制】先定义成员变量,再定义构造方法,成员方法放在最后面
【更推荐】在成员变量、构造方法和成员方法的各自区域内,成员的定义顺序是:
- 先定义公有成员,而后是受保护成员,私有成员放在最后面
说明:公有成员是需要提供外部使用的成员,是最受关注的,放在最上面展示最好。受保护成员虽然只对子类开放,但也是关键成员需要被外部访问,放在public下面最好。最后面放私有成员,因为外部一般不需要特别关注私有成员,那就藏到最后面吧。
【更推荐】接上一条,在定义方法时,如果类中有多个构造方法、多个同名成员方法,那些这些方法应该按照顺序放在一起,以方便阅读。
【参考】类中如果有getter/setter方法,因为它们一般都是给框架自动调用的,格式也是固定的,价值是比较小的,可以放在类体的最后面。
在给类的成员设置访问权限的时候,应该从严(尽量设置private):
【强制】如果不允许外部直接通过new创建对象,必须私有化构造方法,也不允许有默认构造方法。
说明:典型的像工具类中,工厂设计模式中
【强制】类成员方法只在类内部使用时,必须私有化。
说明:中间方法私有化
【更推荐】其余成员变量,静态成员变量,方法只要能够确定不会在类外部使用,一律设置为private。普通成员如有子类使用的需求,设置为protected。静态成员变量还最好考虑能不能设置为final
说明:设置权限时要尽量“吝啬”,能不给的权限就不给,能私有化就私有化。某个结构,它的权限越小,修改起来就越容易。比如一个私有的方法,删了就删了,最多对类的内部造成一些影响,排查起来很容易。但如果是一个public方法,我想你动它的时候心里也要三思吧~
【更推荐】一个方法只需要做它应该做的事情,不要为了偷懒让它“身兼多职”。
具体来说:
- 构造方法就是初始化对象、完成类的成员变量赋值,不要在里面加入业务逻辑代码。如果初始化对象依赖于复杂的业务逻辑,必须将业务代码放入init方法,从而达到复用代码,优化代码逻辑的目的
- toString方法直接用idea自带模板生成,不要加入其它业务逻辑
- getter/setter方法同样idea自动生成,不要加入其它业务逻辑
- 其它方法也是一样,遵循“专人专用”的原则,一个方法只需要完成它需要完成的功能即可,不要冗余。
>(red!)
说明:上面文档中提到了代码格式规范,如果一一记忆难免过于复杂,这里推荐大家配置代码模板,然后使用快捷键统一格式。 大家可以根据实际情况酌情使用~
>(green!)
开发工具:IDEA 2018.3
格式模板:阿里巴巴代码格式模板
格式化代码快捷键:Ctrl + Alt + L(IDEA win平台,mac自行查阅)
>(green!)
阿里巴巴代码模板下载地址: https://github.com/alibaba/p3c/tree/master/p3c-formatter
注意使用其中的 eclipse-codestyle.xml 作为代码模板~
如果不会使用Git下载,可以使用百度云盘:
链接:https://pan.baidu.com/s/1ugU2zedUXcrV2_EEP5QdRw 提取码:6csk
请按照下文步骤操作(以IDEA 2018.3为例,其它版本大同小异)
>(green!)
IDEA自身是没有代码模板导入选项的,阿里巴巴提供的代码格式化配置也是基于eclipse的。所以如需在IDEA中使用此配置,需要安装对应的eclipse插件—— Eclipse Code Formatter
打开 File -> Settings -> Plugins -> 在 Marketplace 中搜索 Eclipse Code Formatter 安装搜索结果的第一个插件,如图:
安装插件后,会要求重启IDEA,重启即可完成安装。
注:某些情况下会出现不能连接插件商城网络的情况,请多尝试几次,实在不行就换一个网络环境,比如开个手机热点试一试。
>(red!)
2021年/11月16日更新
Eclipse Code Formatter 这款插件在11月初的时候,大版本更新了一次。原作者放弃了该插件对2020版本以下的IDEA的支持,所以大家在IDEA 2018自带的插件市场,包括JetBrains官网上可能都已经找不到该插件的2018版本了。这里提供备用的安装方式,即安装包安装。百度云下载链接如下:(安装方式也附有说明)
链接:https://pan.baidu.com/s/1ugU2zedUXcrV2_EEP5QdRw 提取码:6csk
如果仍然存在其它问题,可联系老师解决~
>(green!)
打开 File -> Settings -> Other Settings -> Eclipse Code Formatter 进行IDEA代码格式配置,将代码格式化文件eclipse-codestyle.xml,配置到插件中,如下图所示:
几个注意事项:
- 建议在IDEA本地安装文件中,创建一个单独的文件夹(比如叫 format ),然后将配置文件放进去。不要乱扔配置文件,导致后期模板失效。
- 按照图片中标记的位置进行修改,其余地方保持默认即可。
- 具体是否使用模板请根据公司的要求来决定,不需要刻意去模仿。
- 为了使设置对新创建的工程依赖生效,需要打开 File -> Settings -> Other Settings -> Settings for New Projects -> Other Settings -> Eclipse Code Formatter 重复一遍上述设置。
>(green!)
代码模板安装配置好后,使用起来就十分容易了:直接在代码文件中按快捷键 Ctrl + Alt + L 即可!具体的使用效果大家可以自行摸索一下,注意之前的老代码不会因为配置模板而直接更改格式,需要自行格式化。
注:这里希望大家在使用IDEA写代码时,能够养成两个非常好的习惯:
- 写几行代码按一下 Ctrl + S 保存代码文件~
- 写几行代码按一下 Ctrl + Alt + L 格式化代码~
>(red!)
说明:
上面文档中提到了注释规范,如果全部依赖手打还是有些麻烦的,这里推荐大家配置注释模板,然后快速生成注释模板。
>(green!)
开发工具:IDEA 2018.3
注释样式:
类注释格式样式,要求给出作者和创建时间、以及必要的解释说明。一个具体的案例如下:
IDEA类注释样式
xxxxxxxxxx
81/**
2*(自定义类描述)
3* @since xxx
4* @author xxx
5*/
6public class Test{
7//类体
8}
说明:
@author是Javadoc规范中的标签,表示代码的创作者。作者的名字可以写自己的本名、花名也可以写自己公司的内部邮箱地址,根据需要自行填写即可,一般只要能够让别人知道代码是谁写的就可以了。(方便沟通)
Javadoc规范中并没有明确和日期相关的标签。有些程序员会选择自创标签比如 @date / @create等。这样的做法并不是错误的,很多公司也会采取这种做法(比如我之前的公司用的是@date)
但是本着教学严谨规范的态度,Javadoc规范中既然没有相关标签,那我们也不要自创标签。
Javadoc规范中,有一个
@since
标签,它用来表示当前代码第一次出现的(JDK)版本号,这里我们拿来表示日期。注:从实际开发角度来说,如果公司的代码没有生成Javadoc文档的刚需(实际上有这种刚需的公司非常少),自创标签是完全可以的。
属性(成员变量)一般比较少写注释,也没有较为固定的格式。自行用单行注释或者文档注释即可。
方法注释格式,要求给出作者、创建时间、方法的参数、方法的返回值以及抛出的异常等。如果是抽象方法,也需要说明子类的情况。具体写什么,可以根据方法的情况增删。比如无参方法就不需要指出参数,void方法也不需要指出返回值。
一个具体的案例如下:
IDEA方法注释样式
xxxxxxxxxx
171/**
2*(自定义方法描述)
3* @since xxx
4* @author xxx
5* @param message xxx参数描述
6* @param name xxx参数描述
7* @return java.lang.String xxx返回值描述
8* @throws java.lang.Exception xxx异常描述
9* @exception java.lang.RuntimeException xxx异常描述
10*/
11public String myTest(String message, String name) throws Exception {
12// 演示代码,无意义
13if (true) {
14throw new RuntimeException();
15}
16return "";
17}
说明:
- @param 和 @return 也是Javadoc规范中的标签,分别表示方法的参数(parameter)和返回值。
- @throws 和 @exception 也是Javadoc规范中的标签,官方指出它们的语义是一致的或等价的,都是表示方法中的异常。根据实际使用中的情况来看,建议 @throws 后面跟编译时异常,@exception 后跟方法中抛出的运行时异常。
- 根据方法的实际情况,标签可能会有增减,具体情况具体对待。
最后,需要说明的是:
- 不同公司规范可能不同,这里给出的是符合 Javadoc规范 的注释格式,实际开发以公司标准为基准。
- 这里给出的是注释的样式,模板配置中要填写模板代码,模板代码配置参见下面。
>(red!)
请按照以下步骤完成模板的配置,相关的使用也会在文档中详细说明。(以IDEA 2018.3为例,其它版本大同小异)
>(green!)
说明:可以在IDEA全局配置一个USER属性,用于填充自动生成的注释中的作者 @author 标签。
打开IDEA中上方的 Help -> Edit Custom VM Options -> 在打开的配置文件的最下方中,新增以下代码:
-Duser.name=xxx
其中 "xxx" 请填上自己的名字~(随意,公司中大多会填自己的邮箱)
>(green!)
打开IDEA左上方的 File -> settings -> Editor -> File and Code Templates -> files -> class ,然后将以下模板代码粘贴进去:
IDEA类注释模板
xxxxxxxxxx
51/**
2* ${description}
3* @since ${YEAR}/${MONTH}/${DAY} ${HOUR}:${MINUTE}
4* @author ${USER}
5*/
配置完成后,这时新建class时,会提示输入类描述description,可以自己新建一个类,尝试一下即可明白~
>(green!)
打开IDEA左上方的 File -> settings -> Editor -> Live Template ,配置方法注释模板的过程比较复杂,请严格按照步骤操作:
按照图中的序号,操作步骤为:
点击 标号1 图中的加号,然后首先新建一个组(Group),然后在组中新建模板(Live Template),名字可以自己取一个。例如图中我的组叫 我的method模板 ,下面勾选的就是一个模板。
接下来修改模板的具体内容,标号3位置的是缩写(abbreviation)它的作用是在代码中敲出该缩写,加上序号4指定的快捷键(默认是Tab键)就可以生成 序号5 中的模板代码。
注:如果你完全按照我图中的样式配置,需要在方法头的上面,敲"/**",然后按Tab键,即可自动生成该方法的注释。
标号5中的模板如下,直接复制粘贴即可。
IDEA方法注释模板
xxxxxxxxxx
61**
2* $description$ $param$
3* @return $return$
4* @author $USER$
5* @since $date$ $time$
6*/
注意:方法中的注解,泛型,异常等如果需要注释,自行添加标签即可。(可以百度搜一下这些标签怎么加,这里不再细表)
你可以已经注意到了,模板中有很多"$"符号包裹的字符串,这是模板变量,需要明确给这些变量进行赋值。点击 标号6 的按钮开始给这些变量赋值。如下图所示:
各个变量的取值如下, 建议将内容直接复制粘贴进去即可。
date:
xxxxxxxxxx
11date("yyyy/MM/dd")
注:格式同日期格式化类(DateFormat),y表示年,M表示月,d表示天
time:
xxxxxxxxxx
11time()
param:
方法参数模板变量
xxxxxxxxxx
11groovyScript("if(\"${_1}\".length() == 2) {return '';} else {def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList();for(i = 0; i < params.size(); i++) {result+='\\n' + ' * @param ' + params[i] + ' '}; return result;}", methodParameters());
注:不要管,直接复制粘贴进去就可以了。
return:
xxxxxxxxxx
11methodReturnType()
USER:
xxxxxxxxxx
11user()
最后,后面选项中的对号,建议按照上图勾选,然后点击OK完成配置。
上述步骤都完成后,还需要配置模板生效的范围 ,如下图:
点击 Define 按钮后,勾选其中的Java即可让脚本在Java代码中生效。
上述步骤完成,就可以根据 缩写 + 触发键 在Java代码中生成方法注释了。 注意一定要在方法声明的上一行写这个方法的注释,不要写在方法体中或者方法的下面。 如果是一个抽象方法,则需要手动修改参数和返回值。如果方法还有诸如异常,注解等需要说明的,自行添加,模板中就不写它们了,毕竟不是很常见。以上,完成模板配置,大家可以自行测试一下!