为类想出好的、精确的名称是出了名的困难。如果做得好,它可以使代码更加自我记录,并提供用于在更高抽象级别推理代码的词汇表。
实现特定设计模式的类可能会根据众所周知的模式名称(例如 FooFactory、FooFacade)来命名,而直接建模域概念的类可以从问题域中获取其名称,但是其他类呢?当我缺乏灵感并且想要避免使用通用类名(如 FooHandler、FooProcessor、FooUtils 和 FooManager)时,有没有类似程序员同义词库的东西可以参考?
我将引用一些段落实施模式 https://rads.stackoverflow.com/amzn/click/com/0321413091作者:肯特·贝克:
简单的超类名称
“[...] 名字应该简短而有力。
然而,为了使名称准确
有时似乎需要几个
字。摆脱这个困境的一个方法是
为之选择一个强有力的隐喻
计算。心里打个比喻,
即使是单个词也会带来
丰富的协会、联系网络,
和影响。例如,在
HotDraw绘图框架,我的第一个
绘图中对象的名称是绘图对象。沃德·坎宁安来了
连同排版隐喻:
绘图就像印刷的、排版的
页。页面上的图形项目是
数字,所以班级变成Figure。
在比喻的语境中,Figure同时更短、更丰富,并且
比更精确绘图对象."
合格的子类名称
“子类的名称有两个作用。
他们需要沟通什么班级
他们的样子以及他们的样子
不同的。 [...] 与名称不同
层次结构、子类的根源
名称几乎不经常使用
对话,这样他们就可以
表达的代价是存在
简洁的。 [...]
给出作为
层次结构的根源很简单
名称。例如,HotDraw有一个
班级Handle其中呈现图-
图形编辑时的操作
已选择。简单地说,它被称为Handle尽管延长Figure。有
整个手柄系列,它们
最合适的名字是弹力手柄 and 透明手柄。
因为Handle是它自己的根
层次结构,它值得一个简单的
超类名多于限定名
子类名。
又一条皱纹
子类命名是多级的
层次结构。 [...]而不是盲目地
将修饰符添加到立即数前面
超类,想想这个名字
读者的观点。什么级别
他需要知道这门课是
喜欢?使用该超类作为基础
为子类名称。”
界面
两种风格的接口命名取决于您如何看待接口。
作为没有实现的类的接口应该像类一样命名
(简单的超类名称, 合格的子类名称)。这种风格的一个问题是
命名是在你开始命名类之前,好名字就已经用完了。一个
接口称为File需要一个名为类似的实现类实际文件, 具体文件,或者(哎呀!)FileImpl(后缀和
缩写)。一般来说,沟通一个人正在处理的是具体的还是
抽象对象很重要,无论抽象对象是否实现为
接口或超类不太重要。推迟之间的区别
这种命名风格很好地支持接口和超类,让您
如果有必要,稍后可以自由改变主意。
有时,简单地命名具体类对于通信来说比
隐藏接口的使用。在这种情况下,请在接口名称前加上“I”前缀。如果
接口被称为IFile,该类可以简单地称为File.
如需更详细的讨论,请购买本书!这很值得! :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)