包装代码行的首选方法是什么,特别是涉及长参数列表时?
有几个与包装线有关的问题(比如在编写代码时是否包装文本?还是行宽格式标准),但是我找不到一个涵盖一行代码的地方.
假设我们有一行代码可以像这个例子一样继续前进:
int SomeReturnValue = SomeMethodWithLotsOfArguments(Argument1, Argument2, Argument3, Argument4);
怎么应该包裹?
以下是我能想到的几种方式,以及它们的一些缺点:
int SomeReturnValue = SomeMethodWithLotsOfArguments(Argument1, Argument2, Argument3, Argument4);
我个人不喜欢这个选项,因为格式似乎在视觉上将参数列表与我试图调用的方法分开,特别是因为在新行上的orphanged参数正上方有一个赋值等号("=").
所以,有一段时间我采用了以下方法:
int SomeReturnValue = SomeMethodWithLotsOfArguments(Argument1, Argument2, Argument3, Argument4);
这里,参数都捆绑在一起,都在方法的第一个参数的一边.但是,一个问题是,由于选项卡缩进的空格数,参数列表不会总是在第二行中排列.(为格式化输入额外的空格会非常耗时.)
以前的一个问题中的答案提出了以下格式:
int SomeReturnValue = SomeMethodWithLotsOfArguments( Argument1, Argument2, Argument3, Argument4 );
我实际上喜欢这种格式,因为它的视觉吸引力,但它也可以在视觉上将参数与列表所属的方法分开.另外,我更喜欢单个方法调用而不占用太多行.
所以,我的问题是,如果不首先考虑防止行代码过长的问题,你会如何推荐包装代码行?具体来说,当涉及长参数列表时,哪里是打破一行代码的好地方?
int SomeReturnValue = SomeMethodWithLotsOfArguments ( Argument1, Argument2, Argument3, Argument4 );
选项3建议
int SomeReturnValue = SomeMethodWithLotsOfArguments( Argument1, Argument2, Argument3, Argument4 );
是一种更好的方式,因为它给人一种良好的感觉.如果参数的长度或多或少相同,那么我们可以将它们放在一起,以便它们排成一个例如一个表
int SomeReturnValue = SomeMethodWithLotsOfArguments( Argument1, Argument2, Argument3, Argument4, Argument005, Argument006, Argument7, Argument8 );
我更喜欢这种方式:
int SomeReturnValue = SomeMethodWithLotsOfArguments(Argument1, Argument2, Argument3, Argument4);
线的末端最接近当前的最大线宽(无论是什么),下一行是缩进相对于等号的通常的缩进级别(无论是什么).
不知道为什么,但我认为这是大多数情况下最易读的选择.但是,我选择不对这些事情迂腐,我总是喜欢对于给定的代码段最可读的东西,即使这可能会破坏一些缩进或格式化规则(当然在限制范围内).
这方面的一个例子是,如果函数需要许多参数或者它们本身很复杂的参数,那么我可能会选择这样的东西:
int SomeReturnValue = SomeMethodWithLotsOfArguments( Argument1 + Expression1 + Expression2, Argument2 - Expression3 * Expression4, Argument3, Argument4 * Expression5 + Expression6 - Expression7);
当然,如果参数表达式很长或很复杂,最好在函数调用之前进行计算,并使用临时值来存储结果.
我试着保持简短的线条.在这种情况下,我会在赋值之前和每个参数之后断开.我还将逗号放在行的开头,以便于添加新参数:
int SomeReturnValue = SomeMethodWithLotsOfArguments( Argument1 , Argument2 , Argument3 , Argument4 );
在Visual Studio中使用这种布局是很多工作,但Emacs让我自动化.