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原则。