如何写出简洁明了的 Java 代码?

举报
bug菌 发表于 2024/12/31 09:56:34 2024/12/31
【摘要】 🏆本文收录于「滚雪球学SpringBoot」专栏,专业攻坚指数级提升持续更新中,up!up!up!!欢迎点赞&&收藏&&订阅。@TOC 🚀 前言简洁明了的代码不仅能提升代码的可读性,还能减少后期维护成本。在实际开发中,如何编写清晰、易懂的 Java 代码,是每个开发者都需要深入思考和实践的能力。下面,我们从代码结构、命名规范、最佳实践、常用工具类等多个维度,分享写出简洁明了 Java 代...

🏆本文收录于「滚雪球学SpringBoot」专栏,专业攻坚指数级提升持续更新中,up!up!up!!欢迎点赞&&收藏&&订阅。

@TOC

🚀 前言

简洁明了的代码不仅能提升代码的可读性,还能减少后期维护成本。在实际开发中,如何编写清晰、易懂的 Java 代码,是每个开发者都需要深入思考和实践的能力。下面,我们从代码结构命名规范最佳实践常用工具类等多个维度,分享写出简洁明了 Java 代码的技巧。


1. 遵循良好的代码风格

1.1 规范命名

  • 类名:使用大写字母开头,采用大驼峰命名法
    public class UserManagerService { }
    
  • 变量名和方法名:使用小写字母开头,采用小驼峰命名法
    String userName;
    public void getUserById() { }
    
  • 常量名:使用全大写,单词之间用下划线分隔。
    public static final int MAX_RETRIES = 3;
    

1.2 避免冗长和模糊的命名

命名时要尽量做到简洁且语义明确,不要过于冗长,也不要用单个字母变量(除循环变量外)。

  • ❌ 不推荐:
    int a; // 不明确
    String stringVariableForThePurposeOfStoringName; // 冗长
    
  • ✅ 推荐:
    int userAge;
    String userName;
    

1.3 格式化代码

使用 IDE(如 IntelliJ IDEA、Eclipse)的自动格式化功能 (Ctrl+Alt+L in IntelliJ)。
推荐格式

  • 使用 4 个空格作为缩进。
  • 控制每行代码长度(建议不超过 80-100 字符)。
  • 大括号 {} 始终成对,并在语句块中清晰呈现。
    if (condition) {
        // Your logic here
    } else {
        // Your logic here
    }
    

2. 避免代码重复,提取公共逻辑

2.1 封装公共逻辑

将重复的逻辑提取到工具类或公共方法中:

  • ❌ 不推荐:
    System.out.println("Welcome " + userName);
    System.out.println("Welcome " + adminName);
    
  • ✅ 推荐:
    public void printWelcomeMessage(String name) {
        System.out.println("Welcome " + name);
    }
    
    printWelcomeMessage(userName);
    printWelcomeMessage(adminName);
    

2.2 利用抽象和接口

将通用逻辑封装在父类或接口中。

public abstract class Shape {
    public abstract double calculateArea();
}

public class Circle extends Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}

public class Rectangle extends Shape {
    private double width, height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double calculateArea() {
        return width * height;
    }
}

3. 善用工具类与新特性

3.1 使用标准库

  • 避免重复造轮子:使用 Java 提供的工具类(如 Collections, Stream)。
    List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
    int max = Collections.max(numbers); // 直接获取最大值
    

3.2 使用 Java 8+ 的 Stream 和 Lambda 表达式

使用 StreamLambda 简化集合操作:

  • ❌ 不推荐:
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    List<String> filteredNames = new ArrayList<>();
    for (String name : names) {
        if (name.startsWith("A")) {
            filteredNames.add(name);
        }
    }
    
  • ✅ 推荐:
    List<String> names = Arrays.asList("Alice", "Bob", "Charlie");
    List<String> filteredNames = names.stream()
                                       .filter(name -> name.startsWith("A"))
                                       .collect(Collectors.toList());
    

3.3 使用 Optional 处理空值

避免空指针异常:

  • ❌ 不推荐:
    if (user == null) {
        return "No user found";
    } else {
        return user.getName();
    }
    
  • ✅ 推荐:
    Optional<User> user = findUserById(id);
    return user.map(User::getName).orElse("No user found");
    

4. 简化控制流

4.1 减少嵌套

尽量减少 if/else 的嵌套层级:

  • ❌ 不推荐:
    if (condition1) {
        if (condition2) {
            // Logic
        }
    }
    
  • ✅ 推荐:
    if (!condition1) {
        return;
    }
    if (!condition2) {
        return;
    }
    // Logic
    

4.2 使用三元运算符

  • ❌ 不推荐:
    String result;
    if (age > 18) {
        result = "Adult";
    } else {
        result = "Minor";
    }
    
  • ✅ 推荐:
    String result = age > 18 ? "Adult" : "Minor";
    

5. 写好注释,清晰表达意图

5.1 注释要简洁明了

  • 注释应表达 “为什么”,而不是 “怎么做”
  • 推荐格式
    // 检查用户是否为管理员
    if (user.isAdmin()) {
        // 执行管理员逻辑
    }
    

5.2 避免无意义的注释

  • ❌ 不推荐:
    // 定义变量 age
    int age = 25;
    

6. 遵循单一职责原则(SRP)

每个类只负责完成一种任务,避免单个类承担过多职责。

  • ❌ 不推荐:
    public class UserManager {
        public void createUser() { /* 创建用户逻辑 */ }
        public void logActivity() { /* 日志记录逻辑 */ }
    }
    
  • ✅ 推荐:
    public class UserManager {
        public void createUser() { /* 创建用户逻辑 */ }
    }
    
    public class ActivityLogger {
        public void logActivity() { /* 日志记录逻辑 */ }
    }
    

7. 避免硬编码

将常量抽取到配置文件或枚举中。

  • ❌ 不推荐:
    if ("ADMIN".equals(user.getRole())) { ... }
    
  • ✅ 推荐:
    public class UserRole {
        public static final String ADMIN = "ADMIN";
        public static final String USER = "USER";
    }
    
    if (UserRole.ADMIN.equals(user.getRole())) { ... }
    

8. 使用 Lombok 简化样板代码

Lombok 是一个非常流行的 Java 库,可以通过注解减少大量样板代码,如 getter/setter、构造器等。

示例代码:

  • ❌ 不推荐:
    public class User {
        private String name;
        private int age;
    
        public String getName() { return name; }
        public void setName(String name) { this.name = name; }
        public int getAge() { return age; }
        public void setAge(int age) { this.age = age; }
    }
    
  • ✅ 推荐:
    @Data
    public class User {
        private String name;
        private int age;
    }
    

    使用 Lombok 的 @Data 注解自动生成 gettersettertoString 等方法。


9. 编写单元测试

写单元测试不仅可以提升代码的健壮性,还能帮助你发现潜在问题。使用 JUnitMockito 是主流选择。

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;

public class UserServiceTest {

    @Test
    public void testGetUserName() {
        UserService userService = new UserService();
        String result = userService.getUserName(1);
        assertEquals("Alice", result);
    }
}

10. 定期重构与代码评审

  • 定期检查代码是否符合最佳实践,减少重复代码。
  • 使用代码审查工具(如 SonarQube)发现代码中的潜在问题。

🌟 总结

编写简洁明了的 Java 代码,需要从以下几个方面入手:

  1. 良好的代码规范:合理的命名、格式化和注释。
  2. 代码复用和抽象:避免重复,提取公共逻辑。
  3. 工具与特性:充分利用 Java 的现代特性(如 Stream、Optional)以及第三方库(如 Lombok)。
  4. 持续优化:通过单元测试和代码评审,不断提升代码质量。

优秀代码的核心在于清晰的表达意图,既让计算机执行得高效,也让开发者容易理解。🎉

🧧福利赠与你🧧

  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学SpringBoot」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门SpringBoot,就像滚雪球一样,越滚越大, 无边无际,指数级提升。

最后,如果这篇文章对你有所帮助,帮忙给作者来个一键三连,关注、点赞、收藏,您的支持就是我坚持写作最大的动力。

同时欢迎大家关注公众号:「猿圈奇妙屋」 ,以便学习更多同类型的技术文章,免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板、技术文章Markdown文档等海量资料。

✨️ Who am I?

我是bug菌,CSDN | 掘金 | InfoQ | 51CTO | 华为云 | 阿里云 | 腾讯云 等社区博客专家,C站博客之星Top30,华为云2023年度十佳博主,掘金多年度人气作者Top40,掘金等各大社区平台签约作者,51CTO年度博主Top12,掘金/InfoQ/51CTO等社区优质创作者;全网粉丝合计 30w+;更多精彩福利点击这里;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试真题、4000G PDF电子书籍、简历模板等海量资料,你想要的我都有,关键是你不来拿。

-End-

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。