当前位置: 首页 > article >正文

DRY原则-用函数和模块化来避免重复代码

遵循DRY(Don't Repeat Yourself)原则是编程中的一个重要准则,它鼓励我们避免重复代码,通过抽象和函数化来复用代码。这样不仅可以让代码更加简洁、易于理解,还可以减少维护成本和出错率。下面是一个示例,展示如何应用DRY原则来重构一段有重复代码的Python程序。

示例:计算几个不同形状的面积

假设我们需要计算圆形、正方形和长方形的面积。一种非DRY的方法是为每种形状编写单独的代码:

# 非DRY代码示例

def circle_area(radius):
    return 3.14159 * radius * radius

def square_area(side):
    return side * side

def rectangle_area(length, width):
    return length * width

# 使用函数计算各形状的面积
radius = 5
side = 4
length = 6
width = 3

print("Circle Area:", circle_area(radius))
print("Square Area:", square_area(side))
print("Rectangle Area:", rectangle_area(length, width))

虽然这段代码工作得很好,但每个函数都是独立的,没有重复代码。但假设我们需要添加更多的功能,比如打印每个形状的名称和面积,我们可能会在每个函数中重复相似的打印逻辑。

为了应用DRY原则,我们可以抽象出一个通用的打印功能:

# 应用DRY原则的代码示例

def print_area(shape_name, area):
    print(f"{shape_name} Area: {area}")

def circle_area(radius):
    return 3.14159 * radius * radius

def square_area(side):
    return side * side

def rectangle_area(length, width):
    return length * width

# 使用函数计算并打印各形状的面积
radius = 5
side = 4
length = 6
width = 3

print_area("Circle", circle_area(radius))
print_area("Square", square_area(side))
print_area("Rectangle", rectangle_area(length, width))

在这个重构后的版本中,我们创建了一个print_area函数,它接收形状名称和面积作为参数,并打印它们。这样,如果我们需要修改打印逻辑,只需要修改这一个函数即可。这样的设计使得代码更加模块化,易于维护和扩展。

通过这种方式,我们避免了在每个具体的形状计算函数中重复打印逻辑的代码,更好地遵循了DRY原则。


http://www.kler.cn/a/288786.html

相关文章:

  • 代码随想录day22 | leetcode 39.组合总和 40.组合总和II 131.分割回文串
  • 条款33:避免遮掩继承而来的名称(Avoid hiding inherited names)
  • 跟着问题学18——大模型基础transformer模型详解(4)解码器
  • Pitching Go in 2025
  • Java实现拍卖系统详解
  • 【机器学习】机器学习的基本分类-半监督学习(Semi-supervised Learning)
  • 算法训练营|图论第6天 108.冗余连接 109.冗余连接2
  • 【黑马点评】达人探店
  • 使用sass的混合插入模式进行@media响应式媒体查询做自适应开发
  • Github 2024-08-28 C开源项目日报 Top9
  • 算法笔试-编程练习-好题-03
  • 前端框架大观:探索现代Web开发的基石
  • react- native创建pdf
  • mysql学习教程,从入门到精通,MySQL介绍(1)
  • 设计模式及创建型模式-python版
  • C++ Qt进程间通信机制之QRO、QRemoteObjectHost
  • Anaconda安装并配置Python环境 | Python系列教程
  • 把设计模式用起来!(一)——楔
  • 【日常记录-JS】HTML5中使用SVG元素
  • LeetCode40 组合总和 II
  • 安卓model转鸿蒙ets
  • Centos挂载yum源
  • Spring框架
  • 店铺所有商品接口数据解析,JSON格式的示例
  • 在Spring Boot中实现请求IP白名单拦截
  • python-读取word中的内容