我们团队的惯例是使用大括号来包裹条件和循环语句,并在开始大括号之前换行,但对于单行语句,我们不在大括号之间添加换行符。例如:
if( condition )
{ doIt(); }
我们使用clang-format来自动格式化代码,但据我所知,这并不是clang-format可以处理的约定。结果是,我必须非常小心,不要自动格式化整个源文件,否则我就必须修复每一个单行的
if
、else
、for
等等。我发现自己一遍又一遍地撤销同一源文件中的相同自动格式化的行。我刚开始使用CLion,可以很容易地设置其默认格式以匹配我们使用clang-format的方式,但我仍然无法弄清楚如何匹配我们的括号包围单行约定。
是否有办法告诉CLion或clang-format去做到这一点呢?明显的解决方案是要么完全避免自动格式化,要么说服我的团队采用更容易适应的约定,但两者都不是选项(他们是一个非常挑剔的团伙,对代码风格有着非常坚定的意见)。