我加入了现有项目,我是第一个使用clang格式的团队成员。除了一些烦人的差异外,现有的风格大多匹配。这是一个(另一个是here):
folly::dynamic makeRequest(const string &response) {
return folly::dynamic::object()
("log_type", "FOO")
("src_id", "42")
("dst_id", "666")
("success", true);
}
clang-format坚持将其格式化为:
folly::dynamic makeRequest(const string &token_response) {
// using longer variable names to highlight using up the whole line lenght
return folly::dynamic::object()("log_type", "FOO")(
"src_id", somethingId)("dst_id", whateverId)("success",
sucess);
}
在前一种风格中,只要我们每行获得一个方法调用,我就不会强烈地感觉到连续行是如何缩进的。这可能吗?
答案 0 :(得分:1)
不是最好的解决方案,但你可以通过放置" //"来强制换行。在每一行之后:
return folly::dynamic::object() //
("log_type", "FOO") //
("src_id", "42") //
("dst_id", "666") //
("success", true);
答案 1 :(得分:0)
我用过的另一种方法是关闭特定代码块的clang-format
。
// clang-format off
return folly::dynamic::object()
("log_type", "FOO")
("src_id", "42")
("dst_id", "666")
("success", true)
;
// clang-format on
如果在链接的方法参数中包含更复杂的逻辑,这可能不是最佳选择(因为您将希望格式化该逻辑),但是如果您只有这样的元组,则比添加空注释更干净。 / p>
这两种方式都绕过了clang格式,但是这种方式更加简洁(imo),并且向未来的开发人员更清楚地表明了您的意图。