为什么大部分编程语言弃用了宏

更新时间:02-08 教程 由 栗子 分享

这个世界上绝大部分编程教材是针对刚入门的程序员写的,没错,很多编程二十年的程序员其实也刚入门。

以前带队时我总是提醒新招的C/C++程序员尽最大可能不要使用macro,我会警告他们macro有一千种可能令他们的代码出错并且查不出来,之所以有一千种是因为我不想再数下去了。然后他们打开我的代码以后就抓狂了。

如果你问一个程序员什么样的代码bug最多,会有很多回答,比如codingstyle,复杂度,blablabla…

都对,因为他们都是初级程序员。

但是,对于一个资深高级程序员,一个架构师,一个真正的高手来说,其实真正的杀手是代码长度。越短bug越少,不管它多复杂,越长bug越多,不管它多简单。

humanerror,thatsimple!

除了极极极少处不得不使用macro的场景,我使用macro都是为了缩短代码。

可读性?这个真的非常非常非常重要!是的,对于高手来说,“短”就意味着可读性不会太糟,逻辑复杂性并不是问题。如果你读不懂一段“短而tricky的”代码,说明你不是高手。

当然,你可以质疑哪里有那么多高手?没错,但我为什么要让那些低手看明白我的代码?让他们自以为看明白以后去糟蹋吗?

如果是一个真正的高手接手了我的代码,并把我狗血淋头的大骂一顿,没问题啊,他批评的一切我都认同,我诚恳认错,反正你已经看懂了。

但我还是会反复警告新手,尽一切可能避免macro!如果听者是个高手,他本来就不必理会我的blablabla。

以前我带的组里有一个高手,代码能力比我高多了,好多macro的技巧我还是跟他学的,但他极少用,我完全赞成他的理念。

如果说最坏的编程习惯,其实是copypaste,可惜这才是大多数程序员最常见的毛病(尽管几乎人人都清楚)。我在这一点上非常极端,一行C/P都不可以,我见过太多太多摔在这里的案例,每一行C/P(或相似体)我都会坚决去掉,能抽象成函数的,做成函数,出于性能考虑的,用inline,去相似性,能用template也行,如果上下文太多没法函数化,最后一个选择就是macro。

macro是一匹桀骜不驯的烈(劣)马,但是对一个好骑手来说,只需要驯服一次。

声明:关于《为什么大部分编程语言弃用了宏》以上内容仅供参考,若您的权利被侵害,请联系13825271@qq.com
本文网址:http://www.25820.com/tutorial/14_2162801.html