23 命名检查X是否需要完成的方法的好方法是什么?如果需要X可以这样做吗? 例如,如何命名新用户登录后更新用户列表的方法?UpdateListIfNeeded似乎太长了,虽然简单UpdateList意味着每次都可能进行昂贵且不必要的操作。EnsureListUpdated也是一个变体。 C#有一个bool TryXXX(args, out result)模式(例如int.TryParse(str, out num))来检查X是否可能并且可以这样做,但这是稍有不同的。 language-agnostic naming coding-standards — dbkk source 1 只是一个建议,尽管如此,但应谨慎创建此类方法。在这种情况下,他们倾向于以“以防万一”或“在X()中添加对它的调用固定了一个错误,但我不知道为什么”的幌子将它们插入无关的代码中。如果您有纪律只能RefreshUserList()在LoginUser()和之间打电话LogoutUser(),而不要在例如GetUser()(列表应该已经是最新的)期间打电话,那么以下建议绝对适用。 — 凯文·麦考密克
25 我倾向于使用Ensure。它具有确保一定要妥善保管的含义,但是需要这样做。如果已经可以了,只需检查一下就可以了。否则,请执行此操作。无论哪种方式,只要确保已完成即可。 — 梅森·惠勒 source
13 我的偏好是UpdateList。如果什么也不需要做,那就去吧。无论如何,总应该将费用降到最低,因此,如果UpdateList做得比必要的多,则在其实现中有不正确的地方。 基本上是动词告诉您该方法应该做什么。 CalculateX应该总是重新计算X。 GetY应该总是返回Y,但是只有在必要时才进行检索。同样,UpdateZ假设Z是最有效的方式,则请求更新Z。 — 马特·S source
2 打电话给我,可能的话” 摘自我见过的Haskell片段,请尝试 UpdateListMaybe(); — 马克·坎拉斯 source 2 我想如果我对Haskell有更好的了解,这可能更有意义。推论:如果将此语言用于Haskell以外的语言,则只有了解Haskell的人才能理解。 — 罗伯特·哈维 2 六年后,我是一名不同的程序员,对Haskell的知识有了更多的了解。我不再赞同这个答案,哈哈。我想我当时的想法是使用“也许”一词来表示该函数处理某种可选性。有时我仍然会这样做(例如Option [A] => B称为maybeToB) — Mark Canlas
RefreshUserList()
在LoginUser()
和之间打电话LogoutUser()
,而不要在例如GetUser()
(列表应该已经是最新的)期间打电话,那么以下建议绝对适用。