gpt4 book ai didi

java - 在我的代码中实现可切换功能的适当方式?

转载 作者:行者123 更新时间:2023-12-02 12:56:17 25 4
gpt4 key购买 nike

(我是初学者)
实现可由用户打开/关闭的功能的推荐/最干净/最有效的方式是什么?
我计划向我的应用程序添加一些功能,用户可以在“设置”页面中打开或关闭这些功能。例如,点击某些 View 时的触觉反馈s。在我的代码中,这个 View有一个 onClickListener执行触觉反馈和其他一些方法。在我的应用程序的设置页面中,我将使用 Switch 放置类似“启用触觉反馈”的内容。 . Example
想到的第一个想法就是把 if无论在哪里vibrate方法被调用。就像是...

    myView.setOnClickListener(new View.OnClickListener) {
if (hapticsSwitch.isEnabled) {
vibrate(10) //10 ms feedback
}

//more methods...
}

然而,这个 if每当我在我的应用程序中调用任何可切换功能时,都需要重复。所以也许更干净的方法是把这个 if在这些功能的方法中。例如。
    public void vibrate(Long duration) {
if (hapticsSwitch.isEnabled) {
// ...
}
}
但我对可切换功能没有经验。 那么,在我的代码中实现可切换功能的推荐/最干净/最有效的方法是什么?

最佳答案

这是一个非常好的问题,它不是特定于切换,而是鲍勃叔叔所说的“单级抽象”。
在我看来,正确的做法是将其放在振动函数中以及受该参数影响的任何函数中。

您应该考虑两件事:

  • 是否 Vibrate(long duration)没有hapsticsSwitch 也能很好地完成它的工作。我认为答案是否定的,只有当它的调用者执行你建议的 if 语句时它才会正常工作,其他开发人员很容易陷入这个坑并创建一个错误
  • 当此条件从仅查看 hapsticsSwitch && newFeature 更改时,更改该逻辑将是多么容易你需要做多少改变。在我看来,遍历所有振动的调用者将更加困难。

  • 最后一点,我认为您可能希望在您的应用程序中使用没有条件的振动,这并不意味着您应该将 of 语句从 vibrate(Long duration) 移走给它的调用者,但你需要将你的函数拆分为 vibrateIfNeeded(Long duration)vibrate(Long duration)如果需要,将调用振动的功能。

    提示:请阅读 robert c 的《干净的代码》一书。马丁

    关于java - 在我的代码中实现可切换功能的适当方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62206436/

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