Su的技术博客

  • 首页
  • 原创
  • 视频
  • Java
  • MySQL
  • DDD
  • 事故复盘
  • 架构方案
  • AI
  • Other
  • 工具
    • AI工具集
    • 工具清单
    • JSON在线格式化
    • JSON在线比较
    • SQL在线格式化
  • 打赏
  • 关于
路很长,又很短
  1. 首页
  2. Java
  3. 正文
                           

【转载】用这10个技巧帮你写出更好的Java代码

2023-07-30 1773点热度 0人点赞 0条评论
10 Tips to Write Better Code in Java

image_credit — http://commadot.com

大家好,我已经写代码超过10年了,我可以充满信心地说,编写干净,高效和可维护的代码对任何Java开发人员来说都是必不可少的。它不仅提高了代码的可读性,而且还帮助您避免常见的陷阱并提高软件的整体质量。

在过去,我分享了10个Spring Cloud功能,使微服务开发更容易,50+ Spring靴子面试问题以及其他几篇关于Java和Spring Boot的文章,在这篇博客文章中,我将分享十个有价值的技巧,可以帮助你用Java编写更好的代码。

如果你已经用Java编程几年了,那么很可能你已经熟悉这些技巧了,如果是这样的话,我会很感激你能分享更多的技巧,这样我们就可以受益,但是如果你不熟悉,那么学习并开始应用在你的日常编码中。

这里有10个基本的编程技巧,Java开发人员可以在日常编程生活中学习和应用:

1.遵循命名约定

为类、变量和方法使用有意义的名称是至关重要的。遵循标准的命名约定,如变量和方法的骆驼大小写(例如,myVariable,myMethod),并将类名的首字母大写(例如,MyClass)。

这增强了代码的可读性,并使其他人更容易理解您的代码。顺便说一下,这个技巧不仅适用于Java,也适用于任何程序员,因为正确地命名你的类和方法是成为专业开发人员的第一步。

例子:

// Bad naming convention
int x = 10;

// Good naming convention
int numberOfStudents = 10;

2.保持代码简单和简洁

简单性是编写好代码的关键。避免不必要的复杂性,保持代码简洁。将复杂的任务分解为较小的、可管理的方法和类。

您应该学习如何使用有意义的抽象和封装来提高代码可读性并减少依赖性。在这方面我可以给出的另一个提示是不要混合抽象级别。

例子:

// Bad code - complex and verbose
public void calculateTotalPrice(List<Product> products) {
    double totalPrice = 0;
    for (Product product : products) {
        if (product.isActive() && product.getQuantity() > 0) {
            totalPrice += product.getPrice() * product.getQuantity();
        }
    }
    System.out.println("Total price: " + totalPrice);
}

// Good code - simpler and more concise
public double calculateTotalPrice(List<Product> products) {
    return products.stream()
            .filter(Product::isActive)
            .filter(product -> product.getQuantity() > 0)
            .mapToDouble(product -> product.getPrice() * product.getQuantity())
            .sum();
}

3.编写模块代码

模块化允许代码重用和更容易的维护。通过将程序划分为独立的模块或类,每个模块或类负责一个特定的任务,从而创建模块化代码。这促进了代码的组织,提高了可维护性,并使调试和测试代码变得更加容易。

例子:

// Bad code - monolithic and unorganized
public class ShoppingCart {
    // All shopping cart logic here
    ...
}

// Good code - modular and organized
public class ShoppingCart {
    private List<Product> items;
    ...
}
public class Product {
    private String name;
    private double price;
    ...
}

4.正确使用注释

注释在解释代码的意图和功能方面起着至关重要的作用。使用注释来描述复杂的算法、阐明代码逻辑或提供方法和类的文档。但是,不要过度使用注释。尽可能编写自解释代码,并在异常情况下谨慎使用注释。

例子:

// Bad code - unnecessary comments
public void calculateTotalPrice(List<Product> products) {
    // Loop through the products
    for (Product product : products) {
        // Check if the product is active and has quantity
        if (product.isActive() && product.getQuantity() > 0) {
            // Calculate the total price
            totalPrice += product.getPrice() * product.getQuantity();
        }
    }
}

// Good code - comments used for clarification
public double calculateTotalPrice(List<Product> products) {
    double totalPrice = 0;
    for (Product product : products) {
        if (product.isActive() && product.getQuantity() > 0) {
            totalPrice += product.getPrice() * product.getQuantity();
        }
    }
    return totalPrice;
}

5.实现错误处理

Java提供了健壮的错误处理机制,如try-catch块和异常。始终适当地处理潜在的异常和错误。使用特定的异常类型来捕获和处理特定的异常。正确的错误处理可确保从错误中正常恢复,并有助于防止应用程序崩溃。

例子:

// Bad code - ignoring exceptions
public void readFile(String filePath) {
    try {
        // Read file logic
        ...
    } catch (Exception e) {
        // Ignoring the exception
    }
}

// Good code - proper error handling
public void readFile(String filePath) throws FileNotFoundException, IOException {
    try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
        // Read file logic
        ...
    } catch (FileNotFoundException e) {
        // Handle file not found exception
        ...
    } catch (IOException e) {
        // Handle IO exception
        ...
    }
}

6.优化性能

高效的代码可以显著影响应用程序的性能。避免不必要的计算,优化循环和数据结构,并为特定任务使用适当的算法。注意内存使用、资源管理,并避免不必要的I/O操作。

您还应该利用Java内置的分析和优化工具来识别性能瓶颈。

例子:

// Bad code - inefficient loop
for (int i = 0; i < list.size(); i++) {
    // Accessing list.get(i) on each iteration
    ...
}

// Good code - optimized loop
int size = list.size();
for (int i = 0; i < size; i++) {
    // Accessing list.get(i) only once
    ...
}

7.实践代码可重用性

利用面向对象编程的强大功能来提高代码的可重用性。将公共功能封装到可重用的类或实用程序方法中。将代码设计为模块化和独立的,允许您在多个项目中重用组件。这节省了开发时间并提高了一致性。

例子:

// Bad code - duplicate functionality
public double calculateAreaOfRectangle(double width, double height) {
    return width * height;
}

public double calculateAreaOfSquare(double side) {
    return side * side;
}

// Good code - code reuse
public double calculateAreaOfRectangle(double width, double height) {
    return width * height;
}

public double calculateAreaOfSquare(double side) {
    return calculateAreaOfRectangle(side, side);
}

8.应用面向对象原则

Java是一种面向对象的编程语言,理解和应用继承、多态性和封装等关键原则可以大大提高代码质量。

您应该将类和接口设计为内聚的、松散耦合的,并遵循SOLID原则。这增强了可维护性,并允许更容易的扩展和修改。

例子:

// Bad code - lack of encapsulation
public class Circle {
    public double radius;
    ...
}

// Good code - encapsulation
public class Circle {
    private double radius;
    ...
    public double getRadius() {
        return radius;
    }
    ...
}

9.测试您的代码

编写单元测试对于确保代码质量和减少引入bug的可能性至关重要。拥抱测试驱动的开发,并为您的代码库编写自动化测试。

您还可以使用JUnit或TestNG等工具来创建全面的测试套件。定期运行测试并将其集成到开发过程中。

例子:

import org.junit.Test;
import static org.junit.Assert.*;
public class CalculatorTest {
    @Test
    public void testAddition() {
        Calculator calculator = new Calculator();
        int result = calculator.add(2, 3);
        assertEquals(5, result);
    }
}

10.保持学习并保持更新

软件开发领域在不断发展,保持与最新进展同步至关重要。不断学习新的Java特性、框架和最佳实践。

阅读书籍、参加在线社区、参加会议并关注有影响力的Java博客。拥抱终身学习将帮助您编写更好的代码,并成为更精通的Java开发人员。

 

总结

用Java编写更好的代码需要良好实践、关注细节和持续改进的结合。通过遵循这篇博客文章中提到的十个技巧,您可以提高Java代码的质量、可读性和可维护性。

记住,编写好的代码并不是一次性的努力;这是一个不断学习、实践和完善的过程。

Happy coding! 

 

 

作者:Soma

原文:10 Tips to Write Better Code in Java (with Examples) https://medium.com/javarevisited/10-tips-to-write-better-code-in-java-f25e504a42c2

译者:搬运工来架构 verysu.com

更多文章:

  1. 关于聚合根、领域事件的那点事——深入浅出理解DDD
  2. 浅谈DDD中的聚合
  3. 设计模式在外卖营销业务中的实践
  4. 系统设计 | 高精度计算
  5. 系统设计 | 设计和解析 DSL
  6. 殷浩详解DDD 第四讲:领域层设计规范
  7. 系统设计 | 处理业务公式
  8. 浅析设计模式1 —— 工厂模式
  9. 浅析设计模式3 —— 装饰者模式
  10. 【进阶玩法】策略+责任链+组合实现合同签章
标签: 转载 Java 代码质量 可复用性 可读性 编程技能
最后更新:2023-07-30

秋天0261

关注Java领域,后端开发、Netty、Zookeeper、Kafka、ES、分布式、微服务、架构等。分享技术干货,架构设计,实战经验等。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

广告
文章目录
  • 1.遵循命名约定
  • 2.保持代码简单和简洁
  • 3.编写模块代码
  • 4.正确使用注释
  • 5.实现错误处理
  • 6.优化性能
  • 7.实践代码可重用性
  • 8.应用面向对象原则
  • 9.测试您的代码
  • 10.保持学习并保持更新
  • 总结
最新 热点 推荐
最新 热点 推荐
视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构 干货 | 论Elasticsearch数据建模的重要性 马蜂窝消息总线——面向业务的消息服务设计 基于 MySQL Binlog 实现可配置的异构数据同步 视频笔记:Google发布Agent2Agent协议 视频笔记:什么是微服务,为什么是微服务? 视频笔记:什么是AI 智能体? 视频笔记:什么是Flink?
Elasticsearch 使用误区之六——富文本内容写入前不清洗基于 MySQL Binlog 实现可配置的异构数据同步马蜂窝消息总线——面向业务的消息服务设计视频笔记:微服务架构P4 设计模式:每服务数据库、API 网关和事件驱动架构干货 | 论Elasticsearch数据建模的重要性你可以不用RxJava,但必须得领悟它的思想!如何秒级实现接口间“幂等”补偿:一款轻量级仿幂等数据校正处理辅助工具视频笔记:什么是Flink?
Java后端18种接口优化技巧 JAVA字节码增强解密(下) 事务的特性和隔离级别 二级缓存架构极致提升系统性能 视频笔记:什么是微服务,为什么是微服务? 重磅!AI 驱动的 Java 开发框架:Spring AI Alibaba 解决事件驱动架构中的数据一致性难题 JVM GC配置指南

CRUD (1) Event Sourcing (1) graphql (1) id (1) NoSQL (1) quarkus (1) rest (1) RocketMQ (2) Spring Boot (1) zk (1) zookeeper (1) 上下文 (1) 事务消息 (1) 二级缓存 (1) 值对象 (1) 关系数据库 (1) 分布式缓存 (1) 原子性 (1) 唯一ID (1) 商品 (1) 多对多 (1) 子域 (1) 字符集 (1) 客户端心跳 (1) 幂等 (2) 干货 (1) 并发 (1) 应用场景 (1) 应用架构图 (1) 康威定律 (2) 异步复制 (1) 微服务架构 (3) 总体方案 (1) 技术方案 (2) 技术架构 (2) 技术架构图 (1) 技能 (1) 持续集成 (1) 支撑域 (1) 故障恢复 (1) 数据架构图 (1) 方案选型 (1) 日记 (1) 服务发现 (1) 服务治理 (1) 服务注册 (2) 机房 (1) 核心域 (1) 泄漏 (1) 洋葱架构 (1) 消息队列 (5) 源码剖析 (1) 灰度发布 (1) 熔断 (1) 生态 (1) 画图工具 (1) 研发团队 (1) 线程 (2) 组织架构 (1) 缓存架构 (1) 编码 (1) 视频 (19) 读写分离 (1) 贵州 (1) 软件设计 (1) 迁移 (1) 通用域 (1) 集群化 (1) 雪花算法 (1) 顺序消息 (1)

推荐链接🔗
  • AI工具集
  • 工具箱🛠️

COPYRIGHT © 2014-2025 verysu.com . ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

粤ICP备15033072号-2

x