例子:如何权衡多个备选名字
当你要选一个好名字时,可能会同时考虑多个备选方案。通常你要在头脑中盘算一下每个名字的好处,然后才能得出最后的选择。下面的例子示范了这个评判过程。
高流量网站常常用“试验”来测试一个对网站的改变是否会对业务有帮助。下面的例子是一个配置文件,用来控制某些试验:
每个试验由15对属性/值来定义。遗憾的是,当要定义另一个差不多的试验时,你不得不拷贝和粘贴其中的大部分。
假设我们希望改善这种情况,方法是让一个试验重用另一个的属性(这就是“原型继承”模式)。其结果是你可能会写出这样的东西:
问题是:the_other_experiment_id_I_want_to_reuse到底应该如何命名?下面有4个名字供考虑:
1.template
2.reuse
3.copy
4.inherit
所有的这些名字对我们来讲都有意义,因为是我们把这个新功能加入配置语言中的。但我们要想象一下对于看到这段代码却又不知道这个功能的人来讲,这个名字听起来是什么意思。因此我们要分析每一个名字,考虑各种让人误解的可能性。
1.让我们想象一下使用这个名字模板时的情形:
template有两个问题。首先,我们不是很清楚它的意思是“我是一个模板”还是“我在用其他模板”。其次,"template"常常指代抽象事物,必须要先“填充”之后才会变“具体”。有人会以为一个模板化了的试验不再是一个“真正的”试验。总之,template对于这种情况来讲太不明确。
2.那么reuse呢?
reuse这个单词还可以,但有人会以为它的意思是“这个试验最多可以重用100次”。把名字改成reuse_id会好一点。但有的读者可能会以为reuse_id的意思是“我重用的id是100”。
3.让我们再考虑一下copy。
copy这个词不错。但copy:100看上去像是在说“拷贝这个试验100次”或者“这是什么东西的第100个拷贝”。为了确保明确地表达这个名字是引用另一个试验,我们可以把名字改成copy_experiement。这可能是到目前为止最好的名字了。
4.但现在我们再来考虑一下inherit:
大多数程序员都熟悉"inherit"(继承)这个词,并且都理解在继承之后会有进一步的修改。在类继承中,你会从另一个类中得到所有的方法和成员,然后修改它们或者添加更多内容。甚至在现实生活中,我们说从亲人那里继承财产,大家都理解你可能会卖掉它们或者再拥有更多属于你自己的东西。
但是如果要明确它是继承自另一个试验,我们可以把名字改进成inherit_from,或者甚至是inherit_from_experiement_id。
综上所述,copy_experiment和inherit_from_experiment_id是最好的名字,因为它们对所发生的事情描述最清楚,并且最不可能误解。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论