Andrew Koenig, 高巍, 王昕. C陷阱与缺陷. ISBN: 978-7-115-10623-0.
C语言诞生的时代距今已有近五十年。虽然近来C语言仍稳稳占据 TIOBE 排行榜前五的位置。但是这无法掩饰当时设计C语言所遗留的缺陷。
这本书是由作者的一篇论文改编而来,从词法,语法,编译过程到库函数等方方面面讨论了C语言编程者可能犯的错误。这些陷阱有的是C语言设计不合理,有的是因为程序员的粗心或者对于C语言编译与运行过程的不了解。可能你觉得这本书很适合已经学过C语言,并且希望进一步提高自己写的C语言的代码质量的人读。但实际上,这本书中的大多数内容都已经被同类教科书吸收了。如果你已经读过 C Primer Plus 或者《C和指针》那么再读这本书会发现很多内容都是重复的。另外这本书最初的稿子写于1985年,书中内容可能有些过时。所以,我个人认为这本书现在没必要推荐了。
既然,说到了 C 的陷阱,这里就多聊几句。很多人以为研究 C 是像研究物理或者化学一样,进行实验获取经验然后总结一套牛的不行的理论体系。但实际上, C 和任何编程语言一样都是构造性的。你研究半天搞出来的一个“特性”,其实说不定只是设计者疏忽造成的漏洞。只要更新一下规定就能消除掉。喜欢研究 ++i++
这种东西和喜欢在游戏里把 Bug 玩成特性一样,多少是有点太沉溺于自己的世界,而不见外面的广阔了。不过玩 Bug 的人只要不在多人游戏作弊,其实很难给别人带来什么困扰。但故意写 ++i++
这种东西,甚至鼓励别人写这种东西,就很令人难受了。如果是为了防止代码外泄还可以理解,如果你的代码就是给人看的,何必搞这种奇技淫巧呢?
软件开发是一种工程,而代码是给人读的。千万不要把可能造成机器或其它程序员混淆的写法带进自己的代码。了解这些陷阱是为了避开它,而不是故意在代码里写出这种陷阱,显得自己很高端。真正的好代码一般都不难读,也不容易造成歧义。想靠一些奇怪刁钻的写法显得自己厉害,最后只会让真正懂行的人觉得你中二。
求点赞,求收藏,求分享
欢迎关注我的公众号,微信搜索:知则