定义两个函数,或在一个内分支?

nic*_*ckf 3 php function

我正在阅读如何在PHP中检测文件的编码,在某些博客或某处,有人建议这样做:

if (function_exists('mb_detect_encoding')) {
    function is_utf8($str) {
        // do stuff using the mb* libraries
    }
} else {
    function is_utf8($str) {
        // do stuff manually
    }
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这感觉非常混乱,可以用这个代替:

function is_utf8($str) {
    if (...) {
        // mb stuff here
    } else {
        // manual stuff here
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,我也可以看到它也有一些好处.根据if语句的复杂程度以及调用函数的频率,这可能会更有效.我的问题是:你会在什么时候考虑将功能分成两个,就像在第一个例子中一样?我错过了其他任何利弊吗?

编辑:请不要挂在这里的例子,问题是关于这种做法一般.

lee*_*ers 5

我的直觉反应是单一声明is_utf8函数.PHP引擎非常擅长优化,多次调用的开销function_exists()应该可以忽略不计.