一、idea使用技巧
1. idea快捷键
2. 常用快捷键
快捷键 | 说明 | 备注 |
---|---|---|
Ctrl + Shift + F | 全局搜索 | 容易和输入法简繁体切换键冲突 |
Ctrl + Shift + R | 全局替换 | |
Ctrl + Shift + Enter | 代码补全后,自动在代码末尾添加分号结束符 | |
Ctrl + Alt + T | 自动生成具有环绕性质的代码,比如:if…else,try…catch, for, synchronized 等等 | try…catch很方便 |
Ctrl + W | 扩选代码内容 | 很常用 |
Ctrl + Shift + W | 是 Ctrl + W 的反向操作 | |
Ctrl + Alt + L | 格式化代码 | 经常保持格式代码的习惯 |
Shift + Tab | 反缩进 | |
Ctrl + Shift + V | 从之前的剪切或拷贝的代码历史记录中,选择现在需要粘贴的内容。 | 很实用 |
Ctrl + D | 复制当前行到下一行 | 实用 |
Ctrl + Y | 删除光标所在行 | |
Ctrl + Shift + J | 把下一行的代码接续到当前的代码行 | |
Shift + Enter | 当前代码行与下一行代码之间插入一个空行,原来光标现在处于新加的空行上。 | |
Ctrl + Shift + U | 所选择的内容进行大小写转换 | 实用 |
Shift + F6 | 安全重命名(会自动修改引用的名字) | 常用 |
ctrl + Shift+ z | 反撤回 | |
Ctrl + G | 代码定位(行列) | |
3. Ctrl + F (高级查找功能)
4. 编辑器文件跳转控制
跳转操作 | 说明 | 备注 |
---|---|---|
Ctrl+E | 近期使用文件 | 超实用 |
Ctrl + Shift + E | 最近修改文件 | |
Ctrl+Shift+BackSpace | 光标移动到最近修改的地方 | 常用 |
Ctrl + Alt + ← | 返回上次浏览的位置 | |
Ctrl + Alt + → | 返回下次浏览的位置 | |
F11 | 书签 | |
Shift + F11 | 显示所有的书签 | |
Ctrl + F11 | 带有数据的书签 | |
Ctrl + 对应数字 | 跳转对应的书签 | |
Favorites | 我的收藏 | 开发新模块 |
ctrl + F12 | 查看方法和属性列表 |
5. 热部署
6. 断点调试
断点类型 | 截图 | 说明 |
---|---|---|
方法断点 | ![]() | 打在接口上得断点,断点会卡在,运行时实现方法的第一行 |
条件断点 | ![]() | 满足条件时才会进的断点,for循环中使用较多 |
异常断点 | ![]() | 自动停留在抛出该异常的代码行 |
属性断点 | ![]() | 当给属性赋值时下断 |
读取值断点 | ![]() | 当get该属性值时下断 |
断点回退 | ![]() | 后悔药 |
强制退出 | ![]() | 强制退出,不用执行后续代码(避免重启) |
断点中修改值 | ![]() | 断点中手动修改值,修改后续分支逻辑 |
7. 意图判断、智能提示
操作 | 截图 | 说明 |
---|---|---|
iter | ![]() | 增强for循环 |
fori | ![]() | 普通for循环 |
fore | ![]() | forEach循环 |
var | ![]() | 快速生成变量 |
sout | 快速打印语句 | |
soutv | 快速打印最近的变量 | |
soutp | 打印所有参数 | |
ifn | ![]() | 快速判空 |
inn | ![]() | 非空判断 |
surround | Ctrl + Alt + T | |
format | 字符串格式化 | |
Ctrl +Alt +P | ||
为接口和实现快速添加参数 | ||
二、idea常用插件
1. Camel Case(驼峰命名,下划线等快速切换)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QCGBjQE9-1645495783852)(.\image-20220220210102454.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9R0hk01I-1645495783852)(.\image-20220220210139094.png)]
2. 阿里代码规范插件(代码规范约束)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SlsBwXJ2-1645495783853)(.\image-20220220211744673.png)]
3. 翻译插件
下载插件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fI5HNYgI-1645495783854)(.\image-20220221111222050.png)]
配置有道翻译
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l8lOXviM-1645495783854)(.\image-20220221111522241.png)]
翻译源码注释、或者单词
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mYPz8p2-1645495783855)(.\image-20220221111738454.png)]
中英互译 编写类名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3danjL4J-1645495783855)(.\image-20220221111433939.png)]
4. GenerateAllSetter(生成setXXX并且赋默认值)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wCwkOSu1-1645495783856)(.\image-20220220212747082.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-52xihLSK-1645495783856)(.\image-20220220212855300.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDW50cAz-1645495783857)(.\image-20220220212939452.png)]
三、项目代码编写规范
(一)命名风格
- 类名使用
UpperCamelCase
风格,但以下情形例外:DO / BO / DTO / VO / AO / PO等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion
-
方法名、参数名、成员变量、局部变量都统一使用
lowerCamelCase
风格,必须遵从驼峰形式。正例: localValue / getHttpMessage() / inputUserId
-
常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。正例: localValue / getHttpMessage() / inputUserId
正例:MAX_STOCK_COUNT
反例:MAX_COUNT
-
包名统一使用小写,包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例:应用工具类包名为com.alibaba.ai.util、类名为MessageUtils
-
为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意。
正例:从远程仓库拉取代码的类命名为PullCodeFromRemoteRepository。
反例:变量int a; 的随意命名方式。
-
接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的Javadoc注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0rQCoDs3-1645495783858)(.\image-20220221140502778.png)]
配置模板
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LQe47lBZ-1645495783858)(.\image-20220221150533106.png)]
-
方法及接口名称名规约:
1) 获取单个对象的方法用get作前缀。
2) 获取多个对象的方法用list作后缀。
3) 获取统计值的方法用count作前缀。
4) 插入的方法用save/insert作前缀。
5) 删除的方法用remove/delete作前缀。
6) 修改的方法用update作前缀。获取数据的接口名称:以 get、query或select开头
(二)OOP规约
- Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用equals。
正例:“test”.equals(object);
反例:object.equals(“test”);
-
所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。
-
关于基本数据类型与包装数据类型的使用标准如下:
1) 【强制】所有的POJO类属性必须使用包装数据类型。
2) 【强制】RPC方法的返回值和参数必须使用包装数据类型。
3) 【推荐】所有的局部变量使用基本数据类型。
反例:object.equals(“test”);
-
所有的相同类型的包装类对象之间值的比较,全部使用equals方法比较。
-
关于基本数据类型与包装数据类型的使用标准如下:
1) 【强制】所有的POJO类属性必须使用包装数据类型。
2) 【强制】RPC方法的返回值和参数必须使用包装数据类型。
3) 【推荐】所有的局部变量使用基本数据类型。