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

基本的に、メソッド定義が行 line の長さを超える場合は、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つのパラメーターを選択するのは難しいです。

ちなみに、メソッドを呼び出すとき、行の最大長を超えた場合は、引数を 1 行に 1 つずつスタックします (ただし、その場合は、そうしないほうがいいと思います)。

R# のオプションを調べて、利用可能なさまざまなチェック ボックスを調べましたが、状況を改善する方法がわかりません。アイデア?

4

3 に答える 3

20

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

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

常に切り刻む。カンマを好きなように配置できるかどうかはわかりませんが、少なくとも1行に1つのパラメーターがあります。幸運を!

于 2012-06-02T10:08:01.220 に答える
2

これらをオブジェクトでラップして、オブジェクトを渡しませんか。クラスを作ろう!そして、1 つのパラメーターのみを渡します。

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

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

そうすれば、後で、たとえばパラメーターを検証するメソッドを追加することもできます。

もしあなたが本当に賢くなりたいのなら、GetThingsこのクラスにメソッドを追加することができます。

于 2012-05-25T20:48:02.317 に答える
1

「任意の 1 つのパラメーター」を選択するのに問題がある場合は、このメソッドの設計方法を調整することを真剣に検討する必要があります。

Uncle Bob Martin ("Clean Code") は、最大 2 ~ 3 個のパラメーターを使用することを推奨しています。それ以上を使用している場合、可能な限りクリーンなデザインが得られない可能性があり、なぜこのようにデザインしたいのかを再検討するための精神的なヒントになるはずです.

また、これはあなたの質問に対する直接の回答ではないことを認識していますが、元の質問を意味のないものにする回答になる可能性があります (パラメーターの数を減らしたい場合)。ただし、それはあなたのコードなので、最終的には好み次第です。

于 2012-05-25T20:45:39.557 に答える