【问题标题】:Passing a boolean to a function instead of creating two functions将布尔值传递给函数而不是创建两个函数
【发布时间】:2013-08-02 09:35:37
【问题描述】:

例如,我有一个类似下一个的功能:

public void setVisible(bool visible){ ... }

在这种情况下,为了可读性创建两个公共函数 setVisible 和 setInvisible 不是更好吗?

也许可以在内部创建一个私有函数以避免重复代码...

【问题讨论】:

  • 可读性?并不真地。我必须阅读两次才能看到 setVisible 和 setInvisible 之间的区别。
  • 随着 Setter 和 Getter 的出现,如果它们是布尔值,您是否建议也更改它们?这真的没有意义吗?

标签: function boolean


【解决方案1】:

我会说这是一个 BIG 禁忌,原因如下:

可读性setVisible()setInvisible() 这两个关键字之间只有很小的区别,并且在滚动浏览 100 行代码时很容易误读。

语义:拥有 2 个不同的 setXXX()setYYY() 函数意味着存在 2 个不同的属性。虽然您会知道两者在内部映射到相同的位置,但这对于您的库/API 新手来说可能并不明显。

逻辑 :除了设置函数之外,您还可以实现相应的 getVisible()getInvisible() 以获得良好的度量。使用如下代码 sn-ps 肯定会引起足够的混乱。

setVisible()  
...  
getInvisible()  

(wait, what??)

setInVisible()  
...  
getVisible()

(whats the state now??)

【讨论】:

    【解决方案2】:

    我知道 showhide 有时在这种情况下,尤其是在 Windows 上。

    我喜欢它,因为它强调它不是一个纯 getter 和 setter,而是一些实际显示或隐藏窗口的代码。尽管这仍然“只是”更改状态,但可能不会期望纯 setter 具有大量运行时成本。

    不过出于阅读或更改标志的目的,我不推荐它,原因 TheCodeArtist 已经指出。

    【讨论】:

      猜你喜欢
      • 2013-09-04
      • 2015-12-26
      • 2015-08-03
      • 2017-12-24
      • 2023-03-10
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多