|
|
1
5
我的直觉反应是只宣布
|
|
|
2
3
一个好的实践,也许不是在这种情况下,但一般来说可能涉及使用OOP(对象)和工厂方法。
在你的申请中:
你也可以根据你所做的来使用单例模式。它不跳过IF,而是消除了对全局变量的需要。
在你的代码里:
|
|
|
3
2
在风格上,我倾向于第二种。如果性能是一个问题,那么最好考虑使用第一个。 if (function_exists("sin")) {
function baz($farfs) {
print "I am the first baz";
}
} else {
function baz($farfs) {
print "I am the second baz";
}
}
function blarg($fgar) {
if (function_exists("sin")) {
print "I am the first blarg";
} else {
print "I am the second blarg";
}
}
for ($i=0;$i
我在我的工作站上运行了这个,发现对baz的调用的聚合时间占对blarg的聚合调用的50-75%,这取决于被测试的函数是否真的存在。 以下是实际数字:
这两个函数之间的唯一区别是输出中的条件字符和两个额外字符。有趣的是,在这两个测试中,对函数\u exists的10001次调用分别只需要0.18和0.11毫秒。我想知道是否有一些函数调用开销没有考虑在这两个配置文件。 至于风格,我真的不喜欢第一种。在两个不同的地方用名字定义一个函数似乎是一件不明智的事情,特别是当依赖于PHP中的奇怪之处时,这种奇怪之处使得没有在全局范围内执行的函数定义无论如何都会影响全局范围。另一方面,我的偏见可能正在显现,而PHP社区的其他成员在本例中依赖PHP解释器作为某种预处理器可能没有问题。 这就是风格问题。 |
|
|
4
1
默认情况下,始终使用可读性最高的解决方案。如果这段代码对您的应用程序造成了很大的阻力(测量的,而不是假设的),那么您可以对其进行优化。 |
|
|
5
0
我会提前为最有可能相当难看的PHP道歉,但我会做一些更像:
那就是:一个
|
|
|
6
0
正如许多明智的海报所说:不要为性能操心,直到它被证明是一个问题。 但是关于可读性,在我看来,一个函数应该尽可能少地显示责任层。只做一件事的函数最容易理解。 你的问题实际上是关于“我应该如何混合两种责任”:
然后您仍然可以选择是显式地执行分派,还是使用PHP的可能性动态地声明函数。
|