平时用IntelliJ IDEA写代码的时候,你有没有用过这些快捷方式:
输入main
,会弹出自动补全完整的main
结构:
输入sout
,会弹出自动补全完整的System.out
语句:
平时用IntelliJ IDEA写代码的时候,你有没有用过这些快捷方式:
输入main
,会弹出自动补全完整的main
结构:
输入sout
,会弹出自动补全完整的System.out
语句:
今早看到,IntelliJ IDEA 2024.2 发布的邮件提示,看了一眼这个版本更新的新特性真的太适合我了!也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。下面就来一起看看这个版本中推出的几个强大新特性。
今天,给大家推荐几个好用且免费的IntelliJ IDEA插件。如果你还没有用过,可以尝试一下,也许对你的日常工作会有一定的效率提升噢!
如果你是一个RESTful服务的开发者,那么这个一定要试一下。它是一套非常丰富的RESTful服务开发工具,对 Spring MVC 和 Spring Boot 支持也是非常友好,开发者可以直接通过插件找到自己编写的RESTful接口:
有段时间没有更新IDEA了,早上看到 IntelliJ IDEA 2024.1 EAP 5发布的邮件提示,瞄了一眼,发现真的是越来越强了,其中不少功能对我来说还是非常有用的。也许这些能力对关注DD的小伙伴也有帮助,所以搞篇博客介绍和推荐一下。
Endpoints
选项卡在如今这个人工智能高速发展的时代,每个行业都在被AI技术影响而改变。层出不穷的AI辅助工具,让我们看到了机器正在取代一部分基础的日常工作。对于我们开发者而言,当前最炙手可热的就是GitHub Copilot,市面上最好的开发者辅助工具。GitHub Copilot所提供的代码补全、建议、解释等能力非常强大,可以有效地提高编程速度。但是,GitHub Copilot是基于OpenAI所构建,后者的成本并不小,所以GitHub Copilot成为一款付费工具是非常自然的。
那么,对于预算有限的开发者而言,是否有合适的免费平替呢?答案是肯定的!今天,就给大家推荐最近我一直在用,且觉得还不错的插件:通义灵码。推荐的理由,我总结为以下几点:
来看看如何安全地更改类或方法的签名。
我们在 BugReport
中的方法 binaryStrings
接受一个 String 参数:
public boolean binaryStrings(String b) {
Stack<Character> s = new Stack<>();
for (char c : b.toCharArray())
if (s.empty() || !s.peek().equals(c))
s.push(c);
else
s.pop();
return s.empty();
}
在代码库中,通常建议使用常量而不是文字值,那么我们来看看如何重构代码以引入常量。
public static boolean beautifulBinaryStrings(String s) {
while (!s.equals(s = s.replaceAll("AA|BB", ""))) {
System.out.println(s);
}
return s.isEmpty();
}
您可以通过此重构引入或提取字段并将其初始化。
我们的 ViewImpl
类中的方法 getItemsList
使用常量 0 和 4 来获取一个列表的子集。
public class ViewImpl implements View {
@Override
public List<Integer> getItemsList() {
return List.of(1, 2, 3, 4, 5).subList(0,4);
}
}
Extract Method 重构可以使您的方法更短、更易读。
public boolean binaryStrings(String b) {
Stack<Character> s = new Stack<>();
for (char c : b.toCharArray())
if (s.empty() || !s.peek().equals(c))
s.push(c);
else
s.pop();
return s.empty();
}
通过 Extract Parameter 重构,您可以在方法中选择一个常量或表达式,并将其定义为参数传递给方法。 在本示例中,我们还为 getItemsList
方法引入了第二个字段,名为 toIndex
。
public class ViewImpl implements View {
private final int fromIndex;
private final int toIndex;
public ViewImpl() {
fromIndex = 0;
toIndex = 4;
}
public List<Integer> getItemsList() {
return List.of(1, 2, 3, 4, 5).subList(fromIndex, toIndex);
}
}