你应该尽量避免写超过 80 个字符的行,而不是打断它们:
Linus Torvalds:如果你需要超过 3 级的缩进,无论如何你都搞砸了,
应该修复你的程序。
除了条件是您封装的其他内容准备好在其他地方使用之外,这还具有使您的代码更具可读性的副作用。
bool encapsulatedLongCondition() // Add some parameters
{
if (!condition1)
return false;
if (!condition2)
return false;
// ... (Other conditions)
return true;
}
if (encapsulatedLongCondition())
{
// ... (Call some methods, try not to introduce deeper if/loop levels!)
}
通过布尔代数简化条件并尝试反转条件和返回值会很有帮助。:-)
另见:你能简化这个算法吗?
另请参阅 2:Refactor for C# 能够帮助您解决此问题。;-)
一个简单的例子,想象一下在另一个容器中使用没有 typedef 的 Days 和更长的名称需要多长时间。
struct Day
{
// Some data
};
struct Event
{
// Some data
};
typedef list<Event> Events;
typedef map<Day, Event> Days;
// Some other container that would else be long...
- ...(您应该尝试分析为什么您的线路很长并找到解决方案)
希望您了解总体思路,这样您就不需要提出肮脏的换行符。;-)
我会看到出现长行的唯一地方是在您的函数原型中,或者在调用它们时,您应该尝试在最后一个可能的逗号之后中断并继续下一行。而不是在每一个之后都这样做并浪费多行使滚动膨胀并且您的函数过于突出......如果您碰巧经常看到这些长行,您可以将返回类型放在函数名称之前的行上。
void longFunctionName(ParameterType1 parameter1, ParameterType2 parameter2,
ParameterType3 parameter3, ParameterType4 parameter4)