gpt4 book ai didi

java - 设计决策 : Adding new arguments to a method V/S creating an instance variable

转载 作者:行者123 更新时间:2023-12-02 08:13:30 26 4
gpt4 key购买 nike

假设我们有一个类Shape,它有一个方法rotate(int Velocity)。该方法使形状以速度velocity(传递给rotate的参数)旋转。该方法已在一个项目中被调用,比如说 100 个地方。

但现在出现了一个新的要求,即旋转功能还将取决于形状的颜色,即如果颜色为蓝色,则速度应减少 1,否则不应有任何变化被制作。

  • 此问题的一种解决方案是将 rotate(int Velocity) 方法更改为 rotate(int Velocity, Color color),然后添加一个 if在旋转方法中使用语句来检查颜色,并在旋转的 100 次调用中进行更改。例如。

    shape.rotate(50, 蓝色) ;

在旋转方法内,

void rotate(int velocity, Color color) {
if(color == blue)
--velocity ;
}
  • 另一种解决方案是将颜色作为形状对象的实例变量,然后在不向旋转方法添加新参数的情况下,只需在调用它之前设置颜色,然后将 if 检查压缩到旋转内部方法。例如。

     shape.setColor(blue) ;
    shape.rotate(50) ;

    在旋转方法内,

    void rotate(int velocity) {
    if(this.color == blue)
    --velocity ;
    }
  • 另一种解决方案是重载旋转方法并创建一个名为rotate(int Velocity, Color color)的新方法,并在新方法中使用它来电。这将使使用 rotate(int Velocity) 的现有代码保持不变。

以下哪一个是最好的解决方案? 或者,是否存在更好的解决方案?如果有,那么会是什么?

问候

最佳答案

我想说您需要问自己几个问题。

  1. 您关心 rotate 方法之外的颜色吗?如果是,则将其设为实例变量;如果没有,则将其传递给旋转方法。

  2. 您可能会关心 rotate 方法之外的颜色吗?如果是,则将其设为实例变量;如果没有,则将其传递给旋转方法。

  3. 调用旋转方法时您是否总是关心颜色?如果是,请将其作为参数(以强制它们在旋转形状时设置颜色)。

关于java - 设计决策 : Adding new arguments to a method V/S creating an instance variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6896991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com