函数updateData的弊端及优化如何通过类设计简化代码

函数updateData()存在的问题之一是参数过多:它需要接受5个参数和返回3个值。当函数的参数过多时,通常意味着设计上存在改进的空间。为了解决这个问题,可以考虑使用面向对象设计(OO设计)。例如,设计一个抛物体类(Projectile),将所有与抛物体相关的属性(如位置、速度、以及y方向速度的变化)封装在类内部。这样,main函数就不需要直接操作这些细节,提高了代码的可维护性和可读性。以下是优化后的代码示例:

# 优化后的代码
class Projectile:
    def __init__(self, angle, velocity, height):
        self.angle = angle
        self.velocity = velocity
        self.height = height
        self.x = 0.0
        self.y = height
        self.vy = velocity * math.sin(math.radians(angle))
        self.vx = velocity * math.cos(math.radians(angle))

    def update(self, time):
        self.x += self.vx * time
        self.y += self.vy * time
        self.vy -= 9.81 * time

    def getX(self):
        return self.x

    def getY(self):
        return self.y

# main函数
def main():
    angle, vel, h0, time = getInput()
    cball = Projectile(angle, vel, h0)
    while cball.getY() >= 0.0:
        cball.update(time)
    print(f'Distance: {cball.getX():0.1f} meters.')
ppt 文件大小:1.74MB