【问题标题】:How do I name this simple method?我如何命名这个简单的方法?
【发布时间】:2009-10-25 19:46:08
【问题描述】:

首先,这真的不是一个编程问题。更多的是“我如何满足 McConnels 命名约定?”的问题

我有这个处理 word 文档的 Delphi 应用程序。我需要做的一件事是遍历文档中的所有书签,并根据一个简单的规则删除其中一些:如果我目前正在处理报价,我将删除名称以“cw_orderspecific”开头的所有书签。如果我处理订单确认,我将删除所有名称以“cw_quotespecific”开头的书签。

方法到位,一切正常,但我有一个小问题。我应该怎样称呼我的方法?当前名称(“DeleteBookmarksNotAllowedForCurrentDocumentType”)太长。

有什么建议吗?

【问题讨论】:

    标签: language-agnostic naming-conventions naming


    【解决方案1】:

    把函数改成带前缀删除,取名为DeleteBookmarksWithPrefix

    DeleteBookmarksWithPrefix("cw_quotespecific")
    

    DeleteBookmarksWithPrefix(otherWorkTypePrefix)
    

    这使代码非常可读,并且使函数在其他情况下可重用,而不是只对一项非常具体的任务有用。

    请注意,如果您将有第三种工作类型,您可能想要反转它的含义:

    DeleteBookmarksWithoutPrefix(currentWorkTypePrefix)
    

    【讨论】:

    • +1 是一个非常“正确”的答案。但我不会接受。此方法将永远不会被修改。好吧,除非客户提出另一个要求。
    • 依赖于客户提出另一个要求的策略要么非常悲观(成功的系统往往会带来新的需求),要么已经形成僵化,其中关心命名约定的案例。我会寻求此答案中定义的灵活性。
    • 客户总是提出另一个请求。 ;)
    【解决方案2】:

    删除NonRelevantBookmarks ?

    【讨论】:

    • 接受了,但我实际上选择了“DeleteIrrelevantBookmarks”。足够接近:-)
    【解决方案3】:

    你希望它有多短?我的第一直觉是放弃一些看起来不那么重要的词。像 DeleteBookmarksNotAllowedForDocumentType、DeleteBookmarksNotAllowedForDocument 或只是 DeleteBookmarksNotAllowed。虽然我可能更喜欢 DeleteInvalidBookmarks 之类的东西。当然,这只有在没有其他方法可以通过不同的规则删除书签时才有效。
    或者如果你愿意改变你的方法函数的方式,我会通过将前缀作为参数让它更通用,那么命名会更简单。

    【讨论】:

      【解决方案4】:

      使用首字母缩略词?在 cmets 中定义 CDT 为“当前文档类型”,您将获得DeleteBookmarks_NotAllowedForCDT。够短。

      【讨论】:

        【解决方案5】:

        DelBookmarksStartingWith 怎么样?这很清楚,表达了意图。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-04
          • 1970-01-01
          • 1970-01-01
          • 2011-12-03
          • 2013-08-20
          • 1970-01-01
          相关资源
          最近更新 更多