命名“必要时执行X”方法


23

命名检查X是否需要完成的方法的好方法是什么?如果需要X可以这样做吗?

例如,如何命名新用户登录后更新用户列表的方法?UpdateListIfNeeded似乎太长了,虽然简单UpdateList意味着每次都可能进行昂贵且不必要的操作。EnsureListUpdated也是一个变体。

C#有一个bool TryXXX(args, out result)模式(例如int.TryParse(str, out num))来检查X是否可能并且可以这样做,但这是稍有不同的。


1
只是一个建议,尽管如此,但应谨慎创建此类方法。在这种情况下,他们倾向于以“以防万一”或“在X()中添加对它的调用固定了一个错误,但我不知道为什么”的幌子将它们插入无关的代码中。如果您有纪律只能RefreshUserList()LoginUser()和之间打电话LogoutUser(),而不要在例如GetUser()(列表应该已经是最新的)期间打电话,那么以下建议绝对适用。
凯文·麦考密克

Answers:


25

我倾向于使用Ensure。它具有确保一定要妥善保管的含义,但是需要这样做。如果已经可以了,只需检查一下就可以了。否则,请执行此操作。无论哪种方式,只要确保已完成即可


13

我的偏好是UpdateList。如果什么也不需要做,那就去吧。无论如何,总应该将费用降到最低,因此,如果UpdateList做得比必要的多,则在其实现中有不正确的地方。

基本上是动词告诉您该方法应该做什么。 CalculateX应该总是重新计算X。 GetY应该总是返回Y,但是只有在必要时才进行检索。同样,UpdateZ假设Z是最有效的方式,则请求更新Z。


2

打电话给我,可能的话”

摘自我见过的Haskell片段,请尝试

UpdateListMaybe();

2
我想如果我对Haskell有更好的了解,这可能更有意义。推论:如果将此语言用于Haskell以外的语言,则只有了解Haskell的人才能理解。
罗伯特·哈维

2
六年后,我是一名不同的程序员,对Haskell的知识有了更多的了解。我不再赞同这个答案,哈哈。我想我当时的想法是使用“也许”一词来表示该函数处理某种可选性。有时我仍然会这样做(例如Option [A] => B称为maybeToB)
Mark Canlas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.