大多数 C++ 风格指南(例如 Google 的)建议最大行长为 80 个字符以及函数调用的相关指南,以便函数调用的格式正确。
例如,以下是谷歌的风格指南对此事的看法:
函数调用具有以下格式:
bool retval = DoSomething(argument1, argument2, argument3);
如果参数不能全部放在一行上,则应将它们分成多行,随后的每一行都与第一个参数对齐。不要在开括号之后或闭括号之前添加空格:
bool retval = DoSomething(averyveryveryverylongargument1, argument2, argument3);
如果函数有很多参数,如果这会使代码更易读,请考虑每行一个:
bool retval = DoSomething(argument1, argument2, argument3, argument4);
参数可以选择全部放在后续行中,每个参数一行:
if (...) { ... ... if (...) { DoSomething( argument1, // 4 space indent argument2, argument3, argument4); }
特别是,如果函数签名太长以至于无法容纳在最大行长度内,则应该这样做。
没有讨论的是二元运算符更可取的内容。这是一个风格问题,所以没有一个特别正确的答案,但我希望就人们在具有长变量名或表达式的二元运算符的情况下更喜欢什么得到一些意见。
例如,考虑简单的情况
result = reallyReallyReallyReallyLongVariableName * otherReallyReallyLongVariableName;
三种格式让我眼前一亮:
// #1: The assignment operator is treated as a call for the sake of formatting.
result =
reallyReallyReallyReallyLongVariableName * otherReallyReallyLongVariableName;
// #2: The binary operator is positioned under the equal sign, my preference.
result = reallyReallyReallyReallyLongVariableName
* otherReallyReallyLongVariableName;
// #3: There is basic indentation of 4 spaces.
result = reallyReallyReallyReallyLongVariableName
* otherReallyReallyLongVariableName;
前两个在我看来更直观一点,Zend Framework Style Guide推荐 #2 的格式用于 PHP 中字符串的重复连接。
至于第三个,Pear 的 PHP 样式指南建议在重复函数调用的情况下使用运算符开始新行->
,这在某种程度上类似于二元运算符。
我个人更喜欢第二种,但我只是想知道其他人的意见是什么。