Language agnostic 创造性术语

Language agnostic 创造性术语,language-agnostic,terminology,Language Agnostic,Terminology,我似乎过于频繁地使用节点、属性、子项(等等)等平淡的词语,我担心其他人会因为部分名称模糊而难以理解我的代码 如何为类和组件找到创造性的名称,使它们更容易记忆? 我在使用通用工具时遇到了特别的问题,这些工具除了其相当通用的功能用途外,没有真正的描述。我想知道其他人是否找到了创造性的命名方法,而不是简单地根据它们的实用程序命名,例如匿名FunctionWrapperCallerexecutorFactory,很难回答。我发现它们只是因为它们看起来“合适” 然而,我所知道的是,我发现除非某些东西被正确

我似乎过于频繁地使用节点、属性、子项(等等)等平淡的词语,我担心其他人会因为部分名称模糊而难以理解我的代码

如何为类和组件找到创造性的名称,使它们更容易记忆?


我在使用通用工具时遇到了特别的问题,这些工具除了其相当通用的功能用途外,没有真正的描述。我想知道其他人是否找到了创造性的命名方法,而不是简单地根据它们的实用程序命名,例如
匿名FunctionWrapperCallerexecutorFactory

,很难回答。我发现它们只是因为它们看起来“合适”

然而,我所知道的是,我发现除非某些东西被正确命名,否则基本上不可能继续编写代码,而且它“感觉”很好。如果它没有正确命名,我会发现它很难使用,而且代码通常很混乱

我不太关心什么是“值得纪念的”,只关心“准确的”


大家都知道,我经常坐在那里大声思考什么叫什么名字。慢慢来,确保你对这个名字很满意。不要害怕使用普通/简单的词语。

使用“隐喻”是敏捷(和模式)文献中的一个常见主题

“Children”(在你的问题中)是一个被广泛使用的隐喻的例子,并且有很好的理由

因此,我鼓励使用隐喻,只要它们是适用的,而不是一种想象


隐喻在计算中无处不在。从文件到bug再到指向流的指针。。。您无法避免它们。

反映类、方法或属性用途的名称比创造性名称更令人难忘。现代IDE使使用更长的名称变得更容易,因此感觉更具描述性。获得创造性并不如获得精确性更有帮助。

我建议从特定的应用领域中挑选名词。例如,如果要将汽车放在树中,请调用节点类Car-从API中可以明显看出它也是一个节点。另外,在您的实现中,不要尝试太过泛化——不要将汽车的所有属性都放在名为properties的哈希表中,而是为make、color等创建单独的属性。

我认为,为了标准化和通信的目的,最好使用公共vocab,就像在设计模式中一样。我对一个不断“发明”自己术语的程序员有一个问题,我很难理解他。(他一直使用“事件编排”这一术语,而不是“脚本”或“FCFS流程”。尽管如此,还是很有创造力!)


那些常用的词汇描述了我们习惯的东西。节点是一个点,在图中的某个地方,在树中,或者其他什么地方。一种方法是特定于域。如果我们正在做一个映射问题,而不是“节点”,我们可以使用“位置”。至少对我来说,这在某种意义上是有帮助的。因此,我发现有必要在能够与其他程序员通信的同时保持描述符的特定性,以帮助我记住它的功能

许多语言和编码风格喜欢使用各种描述性前缀。在PHP中没有明确的类型,因此这可能会有很大帮助。而不是做

$isAvailable = true;
试一试

诚然,这是一种痛苦,但通常值得花时间

我也喜欢用长名字来描述事物。这可能看起来很奇怪,但通常更容易记住,特别是当我回去重构代码时

$leftNode->properties < $leftTreeNode->arrayOfNodeProperties;
最后,在大学里,我以我的教授的名字给我的班级命名,然后我的班级安排了我想对那个混蛋做的所有事情

$Kube->canEat($myShorts, $withKetchup);

我认为节点、子节点和属性都是很好的名称。我已经可以通过他们“平淡无奇”的名字猜出你们班的以下情况:

  • 节点-此类是对象图的一部分
  • children-此变量保存属于包含节点的节点列表

我不认为“节点”是模糊的或常见的,如果您正在编写一个通用数据结构,那么使用通用名称可能没问题!(也就是说,如果你正在编写一棵树,你可以使用类似TreeNode的东西来强调节点是树的一部分。)一种让使用你的API的开发人员的生活更容易的方法是遵循平台内置库的命名约定。如果每个人都将一个节点称为节点,将迭代器称为迭代器,那么生活就会变得轻松

我真的没有答案,但有三件事需要你考虑

  • 已故的菲尔·卡尔顿(Phil Karlton)有一句名言:“计算机科学中只有两个难题:缓存失效和命名问题。”因此,你很难想出好名字的事实是完全正常的,甚至是意料之中的
  • OTOH,命名事物有困难也可能是糟糕设计的标志。(是的,我非常清楚,1和2是相互矛盾的。或者人们应该把它看作是相互平衡的。)例如,如果一件事情有太多的责任,就几乎不可能想出一个好名字。(看看糟糕的OO设计中所有的“Service”、“Util”、“Model”和“Manager”类。下面是一个谷歌代码搜索的例子。)
  • 此外,你的名字应该映射到主题专家使用的领域术语。如果您找不到主题专家,这表明您目前正在担心不应该担心的代码。(基本上,实现核心业务领域的代码应该得到很好的实现和设计,辅助领域的代码应该得到很好的实现和设计,所有其他代码都不应该实现或设计,而是从供应商那里购买,而您购买的是他们的核心业务领域。[请解释“购买”和]“供应商”自由。社区开发的自由软件就可以了。])
  • 关于上述第3条,您在另一条评论中提到,您目前正在工作
    $luke->lightsaber($darth[$ewoks]);
    
    $Kube->canEat($myShorts, $withKetchup);