https://github.com/torvalds/linux/blob/master/Documentation/process/coding-style.rst
Linux主仓库的偏好编码风格文档,从缩进、换行、起名、typedef、函数、注释、日志、内存分配、inline、宏等等方面简短规范了Linux中的C代码风格和良好实践,可以作为纯C项目代码风格的参考。
至于推荐这个规范的或许最大理由,是Linus在里面一如既往霸道而接地气的文风😆例子:
First off, I'd suggest printing out a copy of the GNU coding standards, and NOT read it. Burn them, it's a great symbolic gesture.
首先,我推荐打印一份 GNU 编码规范出来,然后不要读它。直接烧了它,这是个伟大的象征性举措。
There are heretic movements that try to make indentations 4 (or even 2!) characters deep, and that is akin to trying to define the value of PI to be 3.
有一些异教徒运动尝试把锁进变成4(甚至2!)字符宽,这就好比想把pi的值定义成3一样。
Heretic people all over the world have claimed that this inconsistency is ... well ... inconsistent, but all right-thinking people know that (a) K&R are right and (b) K&R are right.
全世界的异教徒可能会说这个不一致性很……不一致。但是所有正常思考的人都知道:第一、K&R 是对的;第二、K&R 是对的。
Kernel developers like to be seen as literate. 内核开发者希望让别人觉得他们识字。
编码规范是一个很私人的东西,很多东西没有绝对的好坏,只有对于每个人、每个项目上下文中的优劣。他人的编码风格(更延伸一步讲,代码、系统设计)也不必像是朝圣一般地去拜读和遵守,更重要的是学习和理解他人做出某个决定背后的理由,并引发自己对自身方法和习惯的思考(内省)。
希望 Linus 的编码风格能为初接触系统编程的同学带来一点启发,同时,或许还可能在读 Linus 独特的幽默中收获一点点欢笑 😃