猿问

对多字节字符串使用变量函数

我有一个有点复杂的搜索和替换算法,它使用许多不同的字符串函数。而不是在我的代码中加入这样的东西:


$mb = true; // use mb functions or not


$len = $mb? mb_strlen($s) : strlen($s);

我正在考虑这样做,只有一次:


$_strpos = $mb? 'mb_strpos' : 'strpos';

$_substr = $mb? 'mb_substr' : 'substr';

$_strlen = $mb? 'mb_strlen' : 'strlen';

然后我可以使用这样的代码:


$len = $_strlen($s);

它的工作原理。代码更短,更清晰,我认为它应该更快。有什么理由不这样做吗?


holdtom
浏览 98回答 1
1回答

月关宝盒

我能想到一个主要原因:透明度。无论是您还是任何未来的开发人员,甚至您的IDE都无法100%确定最终会调用哪个函数。这是创建不可维护的意大利面条代码的一个步骤。我的建议是:不要这样做!无论如何,一直使用函数有什么问题?我只在明确需要对字节而不是字符进行操作时才使用其他函数。作为程序员,您应该知道是否需要对单个字节或字符执行操作。mb_如果您担心可能无法加载 mbstring 扩展,则可以在代码中添加对此的检查。if (!extension_loaded('mbstring')) {    throw new \Exception('MBString is not loaded as an extension!');} 
随时随地看视频慕课网APP
我要回答