因此,我正在处理这个类,它应该通过web服务从供应商请求帮助文档。我试着把它命名为documententretriver, VendorDocRequester, DocGetter,但它们听起来不太对。最后,我在dictionary.com网站上浏览了半个小时,试图找到一个合适的词。

带着坏名字开始编程就像早上头发很糟一样,接下来的一天就会每况愈下。感觉我吗?


当前回答

投资一个好的重构工具!

其他回答

有时候,一个类或方法没有一个好名字,我们都会遇到这种情况。然而,通常情况下,无法想出一个名称可能暗示您的设计存在问题。你的方法是否有太多的责任?你的类是否封装了一个连贯的想法?

这很困难,这是好事。它迫使你思考这个问题,以及这门课实际上应该做什么。好的名字有助于产生好的设计。

好的命名约定应该尽量减少任何给定变量、类、方法或函数可使用的名称数量。如果只有一个可能的名字,你永远不会有困难记住它。

对于函数和单例类,我仔细检查函数,看看它的基本功能是否将一种东西转换为另一种东西。我对这个术语的使用非常宽松,但你会发现你写的大量函数本质上是以一种形式的东西产生另一种形式的东西。

在您的例子中,这听起来像是您的类将Url转换为Document。这样想有点奇怪,但完全正确,当你开始寻找这个模式时,你会到处看到它。

当我找到这个模式时,我总是将函数命名为xFromy。

因为您的函数将Url转换为Document,所以我将它命名为Document

DocumentFromUrl

这种模式非常普遍。例如:

atoi -> IntFromString
GetWindowWidth -> WidthInPixelsFromHwnd // or DxFromWnd if you like Hungarian
CreateProcess -> ProcessFromCommandLine

你也可以使用UrlToDocument如果你更喜欢这个顺序。不管你说的是xFromy还是yTox,可能都是个人喜好的问题,但我更喜欢From顺序,因为这样函数名的开头就已经告诉了你它返回的类型。

选择一个惯例并坚持下去。如果注意在xFromy函数中使用与类名相同的名称,就会更容易记住所使用的名称。当然,这种模式并不适用于所有情况,但它确实适用于您编写的可以被认为是“功能性”的代码。

不要忘记设计模式(不仅仅是GoF模式)是一种提供公共词汇表的好方法,只要适合情况,就应该使用它们的名称。这甚至可以帮助熟悉命名法的新手快速理解体系结构。您正在处理的这个类是否应该充当Proxy,甚至是Façade ?

线程1:

function programming_job(){
    while (i make classes){
         Give each class a name quickly; always fairly long and descriptive.
         Implement and test each class to see what they really are. 
         while (not satisfied){
            Re-visit each class and make small adjustments 
         }
    }
}

线程2:

while(true){
      if (any code smells bad){
           rework, rename until at least somewhat better
      }
}

这里没有Thread.sleep(…)。