实际编程中宏滥用的陷阱
宏和预处理器在 C 编程中发挥着重要作用,提供了以下能力定义文本替换并执行代码生成。然而,它们的过度使用可能会导致许多挑战,正如一个现实世界的例子所证明的那样,它体现了最严重的宏滥用。
考虑这样一个场景:程序员由于对字节优化的不懈追求而受到驱动以前在内存受限系统方面的经验,采用了非常规的方法。此人定义了一个名为 RETURN 的宏,如下所示:
#define RETURN(result) return (result);}
然后使用该宏定义多个没有右大括号的函数,从而产生代码库看起来像这样:
int myfunction1(args) { int x = 0; // do something RETURN(x) int myfunction2(args) { int y = 0; // do something RETURN(y) int myfunction3(args) { int z = 0; // do something RETURN(z) }
这种极端的宏滥用严重损害了语法突出显示,导致无法在视觉上区分函数和代码块。程序员对这种方法的理由源于在使用汇编语言时磨练出来的根深蒂固的思维方式,其中字节保护至关重要。
与此人相关的其他怪癖进一步凸显了极端编程实践的潜在后果。监视器上方战略性地放置了一面凸面镜,作为检测旁观者存在的基本监视系统。此外,每当编译器检测到代码中的错误时,突然从椅子上退出,然后快速做一组俯卧撑,就被用作一种自我惩罚形式。
这个例子是一个关于过度运动的危险的警示故事。宏观滥用。虽然宏可以在特定场景中提供某些优势,但不加区别地使用它们可能会导致代码库难以阅读、维护和调试。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3