我一直在编写一个 PHP 类,该类正好有 450 行长,它包含 14 个静态方法和 4 个静态属性以及 6 个常量(以及私有__construct()
and __clone()
).
我想知道我是不是做错了什么,我的班级是邪恶的吗?
当您使用该类时,您总是调用一个方法,例如:
MyClass::coolMethod();
然后你完全不理会它,所以感觉让它可构建是愚蠢的?
用它构造对象实际上没有多大意义,因为它更像是一个包含一些可以直接调用的方法的工具。
实际上,在这 14 个方法中,有 7 个是公共的,其余的则是私有的,供类使用。
你应该避免static
尽可能global
.
静态给你带来了与全局给你同样的缺点。每当您使用任何类方法时,您都会将该类的依赖项硬编码到使用代码中。结果是紧密耦合代码的可维护性较差。这可以很容易地避免完全避免静态 http://www.phparch.com/2010/03/03/static-methods-vs-singletons-choose-neither/以及依赖注入的严格使用。
您不能注入和传递静态类,例如当你必须对它们进行单元测试时,你不能嘲笑它们 http://giorgiosironi.blogspot.com/2009/11/mocking-static-methods-road-to-hell.html (或者至少需要付出一些努力 http://sebastian-bergmann.de/archives/883-Stubbing-and-Mocking-Static-Methods.html)。这只是简单的痛苦。静态方法对可测试性来说是致命的。 http://misko.hevery.com/2008/12/15/static-methods-are-death-to-testability/
另外,请记住,类应该只做一件事。他们应该有单一的责任 https://secure.wikimedia.org/wikipedia/en/wiki/Single_responsibility_principle。检查一下你的班级,看看里面是否有一些东西最好放在其他地方,以避免写一个神级. https://secure.wikimedia.org/wikipedia/en/wiki/God_class
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)