20

我有一个我想要这样格式化的方法:

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# 选项并探索了可用的大量复选框,但我不知道如何改善我的情况。想法?

4

3 回答 3

20

尝试从此路径更改选项:

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

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

于 2012-06-02T10:08:01.220 回答
2

为什么不将这些包装在一个对象中并传递该对象。创建一个班级!然后你只传递一个参数。

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

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

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

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

于 2012-05-25T20:48:02.317 回答
1

如果您无法选择“任何一个参数”,那么您应该认真考虑调整您应该如何设计此方法。

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

另外,我意识到这不是对您的问题的直接答案,但它可能是使您的原始问题没有意义的答案(如果您决定要减少参数的数量)。但是,这是您的代码,因此最终取决于您的喜好。

于 2012-05-25T20:45:39.557 回答