假设我有一个函数或过程,我想根据机器的硬件功能集以不同的方式执行。如果存在特征 A,则执行利用特征 A 的特定代码块。如果不存在,并且存在特征 B,则执行利用特征 B 的代码。等等通过N个特征。伪代码如下所示:
function doStuff()
if (featureA)
/* Use feature A to do stuff. */
else if (featureB)
/* Use feature B to do stuff. */
else if...
...
else
/* Do stuff generically. */
显然,扩展if-else
可能会变得混乱。此外,如果这是代码的性能关键部分,最好避免重复的条件检查。
我知道一些针对多个平台的代码设计,例如将特定于平台的实现拆分为同一类或文件的特定于平台的版本。或者,对于较小的代码部分(在 C/C++ 中),#ifdef
s 可以分隔平台代码。但是,这是平台相同但硬件可能不同的情况;例如,不同型号的 Intel CPU。
那么,有没有更好的方法来编写这样的代码?如何设计函数或围绕函数的代码和结构?更喜欢可以在 C++ 中应用的答案。