65.9K
CodeProject 正在变化。 阅读更多。
Home

你应该遵循DRY原则的4个理由,用于软件开发

emptyStarIconemptyStarIconemptyStarIconemptyStarIconemptyStarIcon

0/5 (0投票)

2024年9月3日

CPOL

2分钟阅读

viewsIcon

1535

在软件开发领域,不要重复自己 (DRY) 原则不仅仅是一种最佳实践,更是一种编写清晰、高效且可维护代码的基本方法。但为什么它如此重要呢?

1. 什么是 DRY 原则?

Image
DRY(不要重复自己)原则提倡减少代码重复和冗余。系统中每个知识或逻辑片段都应该有一个单一、明确的表示。

1.1 理解 DRY

Image
DRY 原则的本质是避免在多个地方重复相同的代码或逻辑。相反,功能应该抽象到一个可以根据需要在任何地方重用的单一位置。
示例
// Violating DRY
public class OrderService {
    public void createOrder() {
        // Code to create order
    }

    public void updateOrder() {
        // Code to update order
    }

    public void deleteOrder() {
        // Code to delete order
    }
}

// Following DRY
public class OrderService {
    private void executeOrder(String operation) {
        // Generalized code for handling orders
    }

    public void createOrder() {
        executeOrder("create");
    }

    public void updateOrder() {
        executeOrder("update");
    }

    public void deleteOrder() {
        executeOrder("delete");
    }
}
在上面的代码中,DRY 原则通过将与订单相关的操作概括为单个方法 executeOrder 来应用。

2. 为什么要遵循 DRY 原则?

2.1 提高代码可维护性

当代码被复制时,任何未来的更改或错误修复都必须在多个地方应用,从而增加了错误和不一致的可能性。通过遵循 DRY 原则,更新只需要在一个地方进行,从而简化了维护。
Image
演示结果:假设您有跨多个方法的重复逻辑来计算折扣。如果折扣计算发生变化,您需要更新该逻辑的每个实例。但是,如果该逻辑封装在单个方法中,则更新该方法会将更改传播到所有使用它的地方。

2.2 增强代码可读性

DRY 代码通常更简洁且更易于阅读,因为它减少了混乱。当开发人员遇到重复的代码时,可能会感到困惑,并且难以确定要修改或理解代码的哪个部分。
示例
// Non-DRY Code
public double calculateTotalPrice(double price, int quantity) {
    return price * quantity;
}

public double calculateDiscountedPrice(double price, int quantity, double discountRate) {
    double totalPrice = price * quantity;
    return totalPrice - (totalPrice * discountRate);
}

// DRY Code
public double calculateTotalPrice(double price, int quantity) {
    return price * quantity;
}

public double calculateDiscountedPrice(double price, int quantity, double discountRate) {
    return calculateTotalPrice(price, quantity) * (1 - discountRate);
}
通过重用 calculateTotalPrice 方法,DRY 版本更容易理解和维护。

2.3 缩短开发时间

通过避免代码重复,开发人员可以编写更少的代码,并专注于新功能,而不是在系统的不同部分重新实现相同的逻辑。这可以加快开发周期并缩短上市时间。
演示结果:在截止日期严格的项目中,重用现有代码组件使您可以专注于创新,而不是重写类似的逻辑,从而加速开发。

2.4 简化测试和调试

DRY 代码减少了所需的测试量,因为需要测试的唯一代码路径更少。此外,调试变得更简单,因为错误不太可能分散在多个重复的代码块中。
示例:考虑一个在多个地方使用相同验证逻辑的系统。如果逻辑被复制,则每个实例都需要单独测试。如果逻辑被抽象到一个单一方法中,则只需要测试一次。
// DRY Code Example
public boolean isValidEmail(String email) {
    // Email validation logic
    return email.contains("@");
}

public void registerUser(String email) {
    if (isValidEmail(email)) {
        // Register the user
    }
}

public void updateUserEmail(String email) {
    if (isValidEmail(email)) {
        // Update the email
    }
}
使用上述方法,您只需要测试 isValidEmail 方法一次,从而简化您的测试策略。

4. 结论

DRY 原则是有效软件开发的基石。通过减少代码重复,您可以创建更可维护、可读且高效的系统。无论您是重构现有代码还是启动新项目,请记住 DRY,这将有助于您编写更好的软件。
如果您有任何关于 DRY 原则的问题或需要进一步的澄清,请随时在下面发表评论。欢迎您的反馈和疑问!

阅读更多文章:: 为什么您应该在软件开发中遵循 DRY 原则的 4 个理由

© . All rights reserved.