今天看到了一个讲简化代码的几个小TIPS,记录一下,懒得看的只看最上面的总结就行了
1.1 Methods(方法)
Command+option+M(macOS)
Ctrl+Alt+M(windows/linux)
1.2 Constants 常量
Command+option+C(macOS)
Ctrl+Alt+C(windows/linux)
1.3 Fields
Command+option+F(macOS)
Ctrl+Alt+F(windows/linux)
1.4 Variables变量
Command+option+V(macOS)
Ctrl+Alt+V(windows/linux)
1.5 Parameters参数
Command+option+P(macOS)
Ctrl+Alt+P(windows/linux)
1.6 Inline(内嵌)
Command+option+N(macOS)
Ctrl+Alt+N(windows/linux)
2.Change Signature
Command+F6(macOS)
Ctrl+F6(windows/linux)
3.Rename(重命名)
Shift+F6(macOS)
Shift+F6(windows/linux)
1.Extract / Inline(提取/内联)
1.1 Methods(方法)
Command+option+M(macOS)
Ctrl+Alt+M(windows/linux)
第一步 选中需要提取的代码块
第二步 按下Ctrl+Alt+M 会将选中代码提取到一个方法中,重新命名方法名即可
1.2 Constants 常量
Command+option+C(macOS)
Ctrl+Alt+C(windows/linux)
提取常量,选择需要提取的数值,按Ctrl+Alt+C
修改常量的名称,完成常量提取。
1.3 Fields
Command+option+F(macOS)
Ctrl+Alt+F(windows/linux)
将重复使用的文本提取出来,增加代码的可读性
选中需要提取的文本内容
按 Ctrl+Alt+F 在对话框中设置好文本field的名称,访问权限,以及替换的选项
点击ok后会将这些文本内容提取出来,如下图红框所示。
1.4 Variables变量
Command+option+V(macOS)
Ctrl+Alt+V(windows/linux)
挺长的一段代码,在使用的时候,可读性要差一些,这个方法就是教大家如何把一段代码提取为变量。
首先选择需要提取的内容,按Ctrl+Alt+V,再提示框中选择需要提取的内容。可以根据自己需要选择提取的内容(算上length方法,还是不算length方法,都看个人喜好)。
确认后,需要重命名一下变量名称,IDEA会自动重构相关代码。
1.5 Parameters参数
Command+option+P(macOS)
Ctrl+Alt+P(windows/linux)
提取参数,将代码中重复使用的内容,提取为方法的参数。
选中需要提取的内容,按Ctrl+Alt+P
再提示框中,选择好参数名称以及替换的范围。点击重构。
重构后的代码,会在方法中增加一个参数,替换方法提中的内容,另外调用该方法的代码也会相应调整。
1.6 Inline(内嵌)
Command+option+N(macOS)
Ctrl+Alt+N(windows/linux)
如果想将提取出来的方法内嵌回去,则可以使用这个快捷键进行操作。
选中需要内嵌的方法,按Ctrl+Alt+N,选择相应的内嵌方式(所有都内嵌进来还是单个内嵌?是否移除方法?这些都可以自己选择)
重构后,方法的实现就会被内嵌到调用的方法中。
2.Change Signature (这个不知道怎么翻译合适,更改方法的参数特征?)
Command+F6(macOS)
Ctrl+F6(windows/linux)
选中参数,按下Ctrl+F6,出现下面的对话框后
上述步骤操作结束之后,方法会增加一个season的参数。
IDEA会自动重构所有调用的方法,对于增加的参数,会直接赋予一个默认值,如下图所示,新增加的参数使用summer作为默认值。
3.Rename(重命名)
Shift+F6(macOS)
Shift+F6(windows/linux)
选中方法名,然后按Shift+F6 之后修改方法名
修改后方法名点击后面的图标,会弹出重命名的选项框,选择之后回车即完成重构。
也可以点击上图中的more options,弹出框中可以选择更多内容。重命名“类”和“方法”,可以点击“preview”按钮预览重命名内容。也可以点击“refactor”直接重构(这个图是本机器截图,跟官方视频有点不一样)
点击预览按钮,可以查看到都有哪些内容会被重构
重构之后,会替换掉类的名字和注释中的名字,也会替换掉其他调用这个类的名字。另外这个替换是大小写敏感的。