我刚读这篇文章在这里:http://hamletdarcy.blogspot.com/2008/04/10-best-idea-inspections-youre-not.html,特别是最后一点让我想起了我的代码,具体的建议:公共静态方法 - 一个坏迹象?
在世界上什么是公共方法,你的对象有做不依赖于对象内的任何字段?这当然是一种代码味道。问题在于检查的“自动修复”是应用静态关键字。真是没有。这不是你想要做的。不依赖于对象状态的公共方法不可能是具有明确表述的对象的一部分。它只是没有凝聚力,应该放在别的地方。所以:如果该方法是私人的,接受自动修复,但如果该方法是公开的,则不要。
有问题的代码本质上是一个对象变换器。它需要一个类型为A的对象并将其转换为不同的类型。
我的层次结构是这样的:
接口ObjectTransformer - > GenericObjectTransformer
,然后在下面这个,GenericObjectTransformer由ObjectTransformerA和ObjectTransformerB扩展现在
,由两个ObjectTransformerA和ObjectTransformerB需要的一些功能,但实际上并不依赖GenericObjectTransformer的任何实例变量,因此它是GenericObjectTransformer中的受保护静态方法。
这是否违反了上述规则?显然这是受到保护而不是公开的,但它仍然是一种与班级本身无关的班级以外的方法?
有什么想法?
使用受保护的静态方法时,一定要将它们标记为最终。当人们认为自己是虚拟的时候,很容易混淆人们,当他们绝对不是。并始终限定(将超类名称首先)从你的子类调用它们。 – 2010-07-30 13:24:51