我如何格式化,所以方法参数垂直堆叠,每行一个?

时间:2012-05-25 20:37:19

标签: c# resharper resharper-6.0

我有一个我希望格式化的方法:

public static IQueryable<ThingRequest> GetThings( this EntityContext one
                                                , int? two = null
                                                , int? three = null
                                                , int? four = null
                                                , int? five = null
                                                , String six = null 
                                                , IEnumerable<String> seven = null) {

基本上,如果方法定义超出了直线的长度,我希望每行有一个参数。我不太关心逗号(如果它们出现在每一行的末尾,那就没关系了。)

但R#格式化它,而不是:

public static IQueryable<ThingRequest> GetThings( this EntityContext one, int? two = null, int? three = null, int? four = null, int? five = null,
                                                  String six = null, IEnumerable<String> seven = null ) {

...所以,它排成一行,但每行有几个参数,很难找出任何一个参数。

顺便提一下,当调用方法时,如果最大行长度超过,它会每个行堆叠一个参数(即使在这种情况下,我几乎不喜欢它)。

我已经进入R#选项并探索了各种各样的复选框,但我不知道如何改善我的情况。想法?

3 个答案:

答案 0 :(得分:18)

尝试从此路径更改选项:

ReSharper | Options -> 
Code Editing | C# | Formatting style | Line breaks and Wrapping -> 
Line wrapping | Wrap formal parameters

总是砍。我不知道是否可以按照你想要的方式放置逗号,但至少每行会有一个参数。祝你好运!

答案 1 :(得分:2)

为什么不将它们包装在一个对象中并传递该对象。创建一个类!然后你只传递一个参数。

public class MyParam
{
   public EntityContext one { get; set; }
   public Nullable<int> two { get; set; }
   .....
}

public static IQueryable<ThingRequest> GetThings(MyParam TheParameters) {...}

这样,稍后,您还可以添加一个验证参数的方法。

如果你真的想要聪明,你可以将GetThings方法添加到这个类中,现在你正在谈论OOP!

答案 2 :(得分:1)

如果您在挑选“任何一个参数”时遇到问题,那么您应该认真考虑调整设计此方法的方式。

鲍勃·马丁叔叔(“清洁代码”)建议你最多有2-3个参数。如果你使用的不仅仅是那个,那么你很可能没有最干净的设计,而且应该重新审视你为什么要这样设计它。

另外,我意识到这不是你问题的直接答案,但它可能是一个答案,使你的原始问题没有实际意义(如果你决定要减少参数的数量)。但是,这是你的代码,所以它最终取决于你喜欢的。