代码之家  ›  专栏  ›  技术社区  ›  Alex Gosselin

有什么好的可维护方法来命名IBActions要调用的方法?

  •  1
  • Alex Gosselin  · 技术社区  · 15 年前

    我正在创建函数(例如)来验证内容,然后如果它是有效的,请关闭视图,如果不是,请向用户提供进一步的说明。(或其他类似的行为)当我去命名它的时候,我发现我自己在想,我应该称它为 -doneButtonPressed -validateViewRepairAndClose ? 最好是在UI操作调用方法之后命名该方法,还是在它做了什么之后命名它?有时候看起来很简单,比如 -save 很明显,其他时候,我不能马上给出一个具体的例子,但我知道有些人似乎是以他们所做的事情命名的,只是时间太长,而且很混乱,所以最好直接给他们打电话 xButtonPressed 其中x是按钮上的单词。

    2 回复  |  直到 15 年前
        1
  •  3
  •   Fattie    15 年前

    这是个大问题!!! 我为此失眠了。

    纯粹的FWIW。。。我投的票是“SaveButton”“TheButtonAttheOpright”“userClickedTheLaunchButton”“DoubleClickedOnTheReedBox”等等。

    通常我们都是这样命名的。然而。。我经常让他们直接进入另一个程序“launchTheRocket”“saveAFile”等等。

    这证明有用吗?因为你经常想自己发射火箭。。。在这种情况下,调用launchTheRocket例程,而不是用户按下按钮,然后发射火箭。如果您想自己发射火箭,并调用userClickedTheLaunchButton,则感觉不对,在代码中看起来更混乱。(你是想特别模拟屏幕上的按键,还是?)当它们分开的时候,调试等等就容易多了,所以你知道是谁调用了什么。

    例如,它在收集统计数据方面被证明稍微有用一些。用户要求火箭发射198次,我们总共发射了273次。

    此外——这可能是关键——比方说,从代码的另一部分,您正在使用launch the rocket消息发射火箭。它让你更清楚地意识到你实际上是在做这件事,而不是用按钮做什么。相反,用户点击启动按钮的概念可能会随着时间的推移而改变,它可能会正常地发射火箭,但有时它可能只会弹出一条消息,或者谁知道是什么。

    事实上,点击按钮也可能触发辅助功能(可能是动画之类的),这是一个完美的地方,在“clickedTheButton”里面,然后调用勇敢的函数“launchTheRocket”。

    因此,我实际上提倡第三种更为荒谬复杂的解决方案,即使用单独的“userDidThis”函数,然后使用单独的“startANewGame”函数。即使这意味着正常情况下前者几乎什么也不做,只需要给后者打电话!

    顺便说一句,另一个命名选项是将两者结合起来……”topButtonLaunchesRockets““发光立方体连接社交网络”等。

    终于!别忘了你通常会把它们设置成一个动作,这会在风格上改变一切。

    [theYellowButton addTarget:.. action:@selector(launchRockets) ..];
    [theGreenButton addTarget:.. action:@selector(cleanUpSequence) ..];
    [thatAnimatingButtonSallyBuiltForUs addTarget:.. action:@selector(resetAll) ..];
    [redGlowingArea addTarget:.. action:@selector(tryGetRatingOnAppStore) ..];
    

    也许这是最好的方式,从文件上看!这是有史以来问得最好的问题之一,谢谢!

        2
  •  0
  •   Robert Höglund    15 年前

    我还将沿着xButtonPressed:或handleXTap:的行执行一些操作,然后从处理程序中调用另一个方法。

    - (IBAction)handleDoneTap:(id)sender {
      [self closeView];
    }
    
    - (void)closeView {
      if ([self validate]) {
        // save and close
      }
      else {
        // display error information
      }
    }
    
    推荐文章