Java中的Clean Code:面向初学者的原则与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Java中的Clean Code:面向初学者的原则与示例



每一位踏上Java开发之路的程序员,迟早都会遇到这样的情况:代码能运行,但一周后自己都看不懂了。这就是典型的“脏代码”问题。Clean Code(整洁代码)不仅仅是一个时髦的术语,而是一套能让你的程序易于理解、便于维护和扩展的实践方法。在本文中,我们将通过直观的示例,为初学者讲解Java中Clean Code的核心原则。



为什么整洁代码很重要?



在实际开发中,代码被阅读的次数远多于编写的次数。你会回顾自己的旧项目,在团队中协作,或者将代码交给同事。糟糕的代码会拖慢开发速度,增加Bug数量,并打击士气。Clean Code能节省时间和精力。让我们来剖析关键原则。



1. 清晰的命名:说明你在做什么



变量、方法和类的名称应该回答“这是什么?”或“它做什么?”的问题。不要吝啬字符——使用有意义的名称。



糟糕的示例(含义不清的名称):

int d; // 经过的天数List<String> lst = new ArrayList<>();public void prc() { ... }


良好的示例(Clean Code):

int elapsedTimeInDays;List<String> customerNames = new ArrayList<>();public void processPayment() { ... }


建议: 避免使用单个字母的名称(循环计数器除外)。名称应揭示意图。用 activeUsers 或 orderIds 代替 list。



2. 短小的函数:一个任务——一个函数



函数应该只做一件事,并且把它做好。长方法难以测试和理解。尽量将长度控制在20-30行以内。



糟糕的示例(一个函数包揽一切):

public void processOrder(Order order) {    // 验证    if (order.getTotal() <= 0) {        throw new IllegalArgumentException("无效订单");    }    // 保存到数据库    saveToDatabase(order);    // 发送邮件    sendEmail(order.getCustomerEmail(), "订单已确认");    // 更新库存    updateInventory(order);}


良好的示例(拆分为短小函数):

public void processOrder(Order order) {    validateOrder(order);    saveOrder(order);    notifyCustomer(order);    updateStock(order);}

private void validateOrder(Order order) { if (order.getTotal() <= 0) { throw new IllegalArgumentException("无效订单总额"); }}

private void notifyCustomer(Order order) { sendEmail(order.getCustomerEmail(), "订单已确认");}


现在每个函数都有清晰的职责。代码变得自文档化。



3. 避免重复:DRY原则



DRY(Don't Repeat Yourself)原则指出:系统中的每一份知识都应该有唯一的表示。如果你复制代码,就会给维护带来麻烦。



糟糕的示例(重复代码):

public double calculateDiscountForRegularCustomer(double price) {    return price * 0.9; // 10%折扣}

public double calculateDiscountForVipCustomer(double price) { return price * 0.8; // 20%折扣}


良好的示例(通用化):

public double calculateDiscount(double price, CustomerType type) {    double discountRate = getDiscountRate(type);    return price * discountRate;}

private double getDiscountRate(CustomerType type) { switch (type) { case REGULAR: return 0.9; case VIP: return 0.8; default: return 1.0; }}


现在,修改折扣逻辑只需在一个地方进行。



4. 格式化和注释:视觉整洁



代码应该整洁

博客

书籍推荐