当前位置:  开发笔记 > 开发工具 > 正文

在哪里包装一行代码,特别是长参数列表?

如何解决《在哪里包装一行代码,特别是长参数列表?》经验,为你挑选了4个好方法。

包装代码行的首选方法是什么,特别是涉及长参数列表时?

有几个与包装线有关的问题(比如在编写代码时是否包装文本?还是行宽格式标准),但是我找不到一个涵盖一行代码的地方.

假设我们有一行代码可以像这个例子一样继续前进:

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
);

我实际上喜欢这种格式,因为它的视觉吸引力,但它也可以在视觉上将参数与列表所属的方法分开.另外,我更喜欢单个方法调用而不占用太多行.

所以,我的问题是,如果不首先考虑防止行代码过长的问题,你会如何推荐包装代码行?具体来说,当涉及长参数列表时,哪里是打破一行代码的好地方?



1> kenny..:
int SomeReturnValue = SomeMethodWithLotsOfArguments
(   Argument1,
    Argument2,
    Argument3,
    Argument4
);


在一个单独的行中写下每个参数对我来说就像是一种矫枉过正......
我希望这是因为它允许尾随评论.当你有很多类似类型的参数时 - 乱序传递参数是很棘手的

2> Dheer..:

选项3建议

int SomeReturnValue = SomeMethodWithLotsOfArguments(
    Argument1,
    Argument2,
    Argument3,
    Argument4
);

是一种更好的方式,因为它给人一种良好的感觉.如果参数的长度或多或少相同,那么我们可以将它们放在一起,以便它们排成一个例如一个表

int SomeReturnValue = SomeMethodWithLotsOfArguments(
    Argument1,    Argument2,    Argument3,    Argument4,
    Argument005,  Argument006,  Argument7,    Argument8
);



3> Anders Sandv..:

我更喜欢这种方式:

int SomeReturnValue = SomeMethodWithLotsOfArguments(Argument1, Argument2, 
                        Argument3, Argument4);

线的末端最接近当前的最大线宽(无论是什么),下一行是缩进相对于等号的通常的缩进级别(无论是什么).

不知道为什么,但我认为这是大多数情况下最易读的选择.但是,我选择不对这些事情迂腐,我总是喜欢对于给定的代码段最可读的东西,即使这可能会破坏一些缩进或格式化规则(当然在限制范围内).

这方面的一个例子是,如果函数需要许多参数或者它们本身很复杂的参数,那么我可能会选择这样的东西:

int SomeReturnValue = SomeMethodWithLotsOfArguments(
                        Argument1 + Expression1 + Expression2, 
                        Argument2 - Expression3 * Expression4, 
                        Argument3, 
                        Argument4 * Expression5 + Expression6 - Expression7);

当然,如果参数表达式很长或很复杂,最好在函数调用之前进行计算,并使用临时值来存储结果.



4> Martin Cote..:

我试着保持简短的线条.在这种情况下,我会在赋值之前和每个参数之后断开.我还将逗号放在行的开头,以便于添加新参数:

int SomeReturnValue 
   = SomeMethodWithLotsOfArguments(
         Argument1
       , Argument2
       , Argument3
       , Argument4
    );

在Visual Studio中使用这种布局是很多工作,但Emacs让我自动化.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有