2012-05-25 15 views
16

私はこのようなフォーマットされた私が欲しいの方法があります:メソッドの定義は、行ラインの長さを超えたために起こっている場合メソッドパラメータを1行に1つずつ縦に積み重ねるにはどうすればよいですか?

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

を基本的に、私は、1行に1つのパラメータがあるようにしたいと思います。私はコンマについてあまり心配していません(代わりに各行の最後に表示される場合は問題ありません)。

代わりに、このようなしかし、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) { 

...そう、それ回線それらを、しかし、そこに行あたりいくつかのパラメータがあり、それがいずれかのパラメータを選択するだけでは難しいです。

ちなみに、のメソッドを呼び出すと、最大行の長さを超えると(たとえそのようにしなかったとしても)、1行に1つの引数がスタックされます。

私はR#オプションに入っていて、さまざまなチェックボックスを用意していますが、状況を改善する方法はわかりません。アイデア?

+5

私はあなたが多くの議論を受け入れることをもっと心配したいと思います。 – CaffGeek

+5

@CaffGeekどんな文脈もなく、私はパラメータの量のジャンプが間違っていると思います。 – ErikE

答えて

16

がこのパスからオプションを変更してみてください:

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

常にみじん切りにします。あなたが望むようにカンマを置くことが可能かどうかはわかりませんが、少なくとも1行に1つのパラメータがあります。がんばろう!

1

「いずれかのパラメータ」を選択する際に問題がある場合は、この方法の設計方法を真剣に検討する必要があります。

おじさんのボブ・マーティン(「クリーン・コード」)は、2つのパラメータが最大であることをお勧めします。それ以上のものを使用している場合は、可能な限りクリーンなデザインが可能ではない可能性があります。なぜこのようにデザインしたいのかを再考する精神的なヒントになるはずです。

また、これはあなたの質問に対する直接的な答えではありませんが、あなたが元の質問を却下する回答になるかもしれません(パラメータの数を減らしたければ)。しかし、これはあなたのコードなので、最終的にはあなたの好みに合っています。

3

これらをオブジェクトにラップしてオブジェクトを渡すのはなぜでしょうか。クラスを作成する!そして、あなたは1つのパラメータだけを渡しています。

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

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

このようにして、後でパラメータを検証するメソッドを追加することもできます。

あなたが本当に巧みになりたいのであれば、このクラスにGetThingsメソッドを追加して、今OOPを話していることでしょう!

+0

@ Sam.Rueby:au contraire! OPの本当の問題は、パラメータが1行に収まらないということではないと私は思う。実際の問題は、これらをカプセル化せず、OOP原則を使用していない方法です。そして、それが明らかに「私のパラメータは1行に収まらない」問題にぶつかっている理由です。だから私の答えは彼の問題を解決すると思う。お気軽にあなたの答えを加えてください。 – frenchie

+0

私は理解しています。私はちょうどいくつかのパラメータより多くを取る新しいメソッドが作成されるたびに新しいクラスを作成することは現実的ではないと考えています。また、〜7つのパラメータを取る方法を決して作成してはならないと提案するのは現実的ではないとも思う。はい、20は恐らく設計地ではありません。しかし、7は正当なもの以上のものであり、特にOOPの代わりにより多くの機能プログラミングの校長に従えば正当です。私は彼がパラメータをカプセル化するためのクラスを作成できることを知っていると確信しています。ここでの本当の疑問は、R#とその能力に関することです。 –

+2

この新しいクラスのコンストラクタには、いくつの引数が必要ですか?ちょうどaskin? –

関連する問題