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

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


当前回答

我觉得这是副作用。

真正难的不是命名。难的是命名的过程会让你面对一个可怕的事实,那就是你根本不知道自己在做什么。

其他回答

同意了。我喜欢让我的类型名称和变量尽可能具有描述性,而不太长,但有时只是有一个特定的概念,你找不到一个好的词来形容。

在这种情况下,向同事寻求帮助总是有帮助的——即使他们最终没有帮助,它通常至少能帮助我大声解释出来,让我的车轮转动起来。

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

如果10个人中有8个人理解它,那么你就可以放心地认为它是可以理解、可读和清晰的。总会有那么一两个挑剔的人,他们会毫无理由地找你的茬,只因为他们太小气。

不仅仅是命名一个类,创建一个适当的包结构可能是一个困难但有益的挑战。您需要考虑分离模块的关注点,以及它们与应用程序愿景的关系。

现在考虑应用的布局:

应用程序 VendorDocRequester(从web服务读取并提供数据) VendorDocViewer(使用请求程序提供供应商文档)

我冒昧地猜测,在一些课程中发生了很多事情。如果你将其重构为一种更加mvc化的方法,并允许小类处理单独的任务,你可能会得到如下结果:

应用程序 VendorDocs 模型 文档(保存数据的普通对象) WebServiceConsumer(处理web服务中的细节) 控制器 DatabaseAdapter(使用ORM或其他方法处理持久化) WebServiceAdapter(利用Consumer抓取文档并将其插入数据库) 视图 HelpViewer(使用DBAdapter输出文档)

然后,类名依赖于名称空间来提供完整的上下文。类本身可以固有地与应用程序相关,而不需要显式地这样说。因此,类名更简单,更容易定义!

另一个非常重要的建议:请帮自己一个忙,拿起一本《Head First Design Patterns》。这是一本非常棒的,易于阅读的书,将帮助您组织应用程序并编写更好的代码。欣赏设计模式将帮助您理解您遇到的许多问题已经得到解决,并且您将能够将解决方案合并到您的代码中。

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