命名类使人衰弱[关闭]


9

我不确定这是否是OCD特性,但是我发现有时我被完全阻塞,无法继续命名我认为要在外部使用的类(或函数或名称空间等)时所做的工作给定项目的 以API为例。或实用程序类库。

如果命名不完全正确(在我看来),我就是无法继续...我陷入了试图提供正确名称的困境。我尝试编写一些小应用程序,用它来查看名称,但似乎无济于事...

我知道这无关紧要,并且以任何编程思维为前提,假设您一开始就可以完美使用它……我只是对此感到无能为力……

任何提示/想法将不胜感激...


3
根据我的经验,一旦您确定了类的主体,进行了重构等,那么类的名称和方法就开始落入它们的位置。
Job

11
强制引用:“计算机科学中只有两个难题:缓存失效和命名。” —菲尔·卡尔顿(Phil Karlton)
Macke,

熟悉的感觉。只是不要放弃,不要开始为“ Common”,“ Utilities”,“ Managers”和“ Helpers”命名。:)
Arnis Lapsa 2011年

Answers:


10

在我看来,您所面临的问题不仅是找到一个好名字的更好方法,还包括解决这样做的强迫性问题。老实说,我也意识到自己的一个类似特征。毕竟,名称很重要,我喜欢我正在研究的概念的好名字。但是,它们并不总是最重要的。

这是我用来克服这种情况的一些方法:

  1. 认识到没有完美的解决方案,只有比其他解决方案更好的解决方案。
  2. 首先把事情放在首位。完成编程任务比完美地完成任务更为重要。
  3. 问别人。我们都有我们陷入困境的地区,但幸运的是,不同的人在不同的地方陷入困境。也许其他人会想出一个好名字,或者告诉你这真的没关系。
  4. 设置时间限制。给自己x分钟的时间做挂断的事情,然后继续前进。
  5. 答应自己,以后再回来。记录您想返回的内容。当您将它们搁置一会儿时,许多这类问题都会变得更加清晰。以后您可能会想出一个更好的名称,或者您会意识到这确实没有关系。
  6. 认识到在100年的时间里,没人会在乎。
  7. 相反。给班级起一个非常不好的名字,然后看看会发生什么。这将确认需要花时间在更好的名字上,或者向您显示这实际上没有多大意义。同样,这将帮助您摆脱强迫症的束缚。
  8. 祈祷。这通常对我有用。
  9. 除了做事以外,还要珍惜自己。摆脱认为自己的价值来自提供完美的想法。当我们意识到自己具有内在价值时,除了工作以外,当我们不符合自己的标准时,我们会感到羞耻。
  10. 编造新单词并用它们来命名您的班级,或者只是重新使用旧单词。编程是一个创造性的过程,有时我们捕获的想法是新想法。新的想法需要新的名字。“ EmployeeTransmogrifier”是类的完全有效名称。
  11. 考虑到您正在尝试解决错误的问题。例如,在没有非常清楚调用者需求的前提下编写API并不是一个好主意。如果您解决此问题,则命名问题可能会容易得多。
  12. 吃午饭。午餐总是很好。

4
+1午餐。很多人对解决问题的其他想法没有给予足够的重视。
unholysampler 2011年

一些很棒且经过深思熟虑的观点……
davidsleeps

5

首先

问自己一个问题“这个班级的目的是什么?”。如果不遵循单一职责原则,则命名类和方法将变得非常困难。如果您不能回答该问题,则可能需要重新考虑您要让班级做什么,并考虑分离问题。这将使命名更容易

其次

您有如何命名班级的模式吗?也许尝试查看一些常见的命名模式,例如该模式,一旦您解决了上面的SRP,就会更容易遵循。您的课程会解析XML吗?试试XMLParser。它是否解析XML,创建表示输入的域模型,将其持久化到数据库,然后将成功消息发布到Twitter?尝试重构。

第三

我了解您来自哪里,以前也有过类似情况。也许尝试用一些功能充实您的类,并以一个临时名称开头。使用任何良好的IDE或重构助手,重命名类都应该是一键式操作,因此您最初为类命名的名称不必是永久的!这不仅可以帮助您克服OCD障碍,还可以让您有潜意识的时间进行进一步处理。


最后,稍微偏离主题

前几天我在做某项工作时遇到了麻烦,实现了一个非关键系统,并且我花了很多时间在玩各种类的命名等。根据功能命名接口,命名类根据它们的特定含义...例如,您可能会想拥有IXMLParser和XMLParser,但是当您的输入更改为JSON时会发生什么?试试IInputParser,那样您可以创建具体的类XMLParser和JSONParser,它们都以不同的方式实现IInputParser。


是的,我也有过这样的时刻...问题是您非常擅长此事,您永远不能只编写预期的代码,三个始终是抽象的另一种布局...
Robin Vessey

1

对我来说,这通常是一个标志,我脑海中尚不清楚该设计,因此我给自己起个名字,然后给自己一个时间(例如2分钟)来提出一个更好的方案,到那时,我必须使用我首先想到的那个。首先是Barney,Wilma和Fred。我做类似“ BarniesInputParser”的事情,名字是如此糟糕,我不得不提出一个更好的名字或者以后再更改它们。它们也是如此糟糕,以至于它们都是独特的,使得重构变得微不足道且安全,并且任何查看不完整代码的人都可以立即看到它是不完整的。

重要的是,在不添加功能的同时,也没有为大脑提供任何新信息来定义名称(并澄清设计)。您所要做的只是以不同的方式反驳相同的输入。

或去煮咖啡。在使用机器之前,您将拥有...


令人恐惧的是,我知道这样命名的出厂软件...试着解释一下,五年后,当您是公司中唯一仍然知道“ Tim”是谁的时候。
Yaur 2011年

0

我是从朋友那里回来的。写出您的流程应该做什么。只是一个简短的叙述。然后将名词变成类,将动词变成方法,将副词变成属性。


这是一个简单的CS101类型的练习,用于教授OOAD。但是,在任何没有教授或教科书作者设计的真实系统中,它都达不到要求。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.