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的开发人员的生活更容易的方法是遵循平台内置库的命名约定。如果每个人都将一个节点称为节点,将迭代器称为迭代器,那么生活就会变得轻松 我真的没有答案,但有三件事需要你考虑
$luke->lightsaber($darth[$ewoks]);
$Kube->canEat($myShorts, $withKetchup);