因此,我正在处理这个类,它应该通过web服务从供应商请求帮助文档。我试着把它命名为documententretriver, VendorDocRequester, DocGetter,但它们听起来不太对。最后,我在dictionary.com网站上浏览了半个小时,试图找到一个合适的词。
带着坏名字开始编程就像早上头发很糟一样,接下来的一天就会每况愈下。感觉我吗?
因此,我正在处理这个类,它应该通过web服务从供应商请求帮助文档。我试着把它命名为documententretriver, VendorDocRequester, DocGetter,但它们听起来不太对。最后,我在dictionary.com网站上浏览了半个小时,试图找到一个合适的词。
带着坏名字开始编程就像早上头发很糟一样,接下来的一天就会每况愈下。感觉我吗?
当前回答
简而言之: 我同意好名字很重要,但我不认为你必须不惜一切代价在实现之前找到它们。
当然,最好一开始就有个好名字。但如果你不能在2分钟内想出一个,以后重命名将花费更少的时间,从生产力的角度来看是正确的选择。
长: 一般来说,在实现之前对名称考虑太久通常是不值得的。如果你实现你的类,命名它为“Foo”或“Dsnfdkgx”,在实现的时候,你会看到你应该给它命名什么。
特别是在Java+Eclipse中,重命名一点也不麻烦,因为它会小心地处理所有类中的所有引用,并警告您名称冲突等。只要这个类还没有在版本控制存储库中,我不认为重命名5次有什么错。
基本上,这是一个如何思考重构的问题。就我个人而言,我喜欢它,尽管它有时会惹恼我的队友,因为他们相信永远不要碰一个运行系统。从您可以重构的所有内容来看,更改名称是您可以做的最无害的事情之一。
其他回答
不应该以供应商文档为对象吗?我的意思是,这是有形的,而不仅仅是一些拟人化的项目的一部分。因此,您可能有一个VendorDocumentation类,该类具有一个获取信息的构造函数。我认为,如果一个类名包含一个动词,通常是出了问题。
好的命名约定应该尽量减少任何给定变量、类、方法或函数可使用的名称数量。如果只有一个可能的名字,你永远不会有困难记住它。
对于函数和单例类,我仔细检查函数,看看它的基本功能是否将一种东西转换为另一种东西。我对这个术语的使用非常宽松,但你会发现你写的大量函数本质上是以一种形式的东西产生另一种形式的东西。
在您的例子中,这听起来像是您的类将Url转换为Document。这样想有点奇怪,但完全正确,当你开始寻找这个模式时,你会到处看到它。
当我找到这个模式时,我总是将函数命名为xFromy。
因为您的函数将Url转换为Document,所以我将它命名为Document
DocumentFromUrl
这种模式非常普遍。例如:
atoi -> IntFromString
GetWindowWidth -> WidthInPixelsFromHwnd // or DxFromWnd if you like Hungarian
CreateProcess -> ProcessFromCommandLine
你也可以使用UrlToDocument如果你更喜欢这个顺序。不管你说的是xFromy还是yTox,可能都是个人喜好的问题,但我更喜欢From顺序,因为这样函数名的开头就已经告诉了你它返回的类型。
选择一个惯例并坚持下去。如果注意在xFromy函数中使用与类名相同的名称,就会更容易记住所使用的名称。当然,这种模式并不适用于所有情况,但它确实适用于您编写的可以被认为是“功能性”的代码。
这很困难,这是好事。它迫使你思考这个问题,以及这门课实际上应该做什么。好的名字有助于产生好的设计。
在编程时,我也花了很多时间担心任何可以命名的东西的名称。不过我得说这很值得。有时,当我陷入困境时,我会把它放在一边,在喝咖啡休息的时候,我会问问周围的人是否有好的建议。
对于你的课程,我建议VendorHelpDocRequester。
该类只有一个合理的名称:
HelpRequest
不要让实现细节分散了你对意义的注意力。