52.1. 格式化

源代码格式化使用 4 列制表间隔,并且保留制表符(即制表符不会被扩展成空格)。每一个逻辑缩进层就是一个额外的制表位。

布局规则(括号定位等)遵循 BSD 习惯。特别地,ifwhileswitch等受控块的花括号要独自占据一行。

限制行长度,这样在 80 列窗口中代码也是可读的(这并不意味着你不能超过 80 列。例如,为了保持代码在 80 列以内而在任意位置打断一段长的错误消息字符串可能不会给可读性带来什么好处)。

不使用 C++ 风格的注释(//注释)。严格的 ANSI C 编译器不接受这样的注释。出于相同的原因,不使用 C++ 扩展,例如在块中声明新变量。

多行注释块更好的风格是

/*
 * 注释文本从这里开始
 * 延续到这里
 */

注意从列 1 开始的注释块将被pgindent原样保留,但是它将重新对缩进的注释块断行,好像它们是纯文本一样。如果你想要保留一个缩进块中的换行,可以像这样增加破折号:

    /*----------
     * 注释文本从这里开始
     * 延续到这里
     *----------
     */

虽然在提交补丁时并不是一定要遵守这些格式化规则,但是最好能遵守。在下一次发行前你提交的代码将会通过pgindent,因此使用某种其他格式化习惯无法使代码被编排得很好。对于补丁,一种比较好的经验规则是"让新代码看起来像它周围的原有代码"

src/tools目录包含有可以用于emacsxemacs或者vim编辑器的设置文件,它们可以帮助确保这些编辑器会根据上述习惯格式化代码。

可以这样调用文本浏览工具moreless

more -x4
less -x4

来让它们以合适的方式显示制表符。