Hilfsklasse für Null- und leere Prüfungen

  • Ich habe eine statische Hilfsklasse:

     public static class Helper
    {
        public static bool IsNull<T>(this T value) where T : class
        {
            return (value == null);
        }
    
        public static bool NotNull<T>(this T value) where T : class
        {
            return (!value.IsNull<T>());
        }
    
        public static bool IsNullOrEmpty(this string value)
        {
            return string.IsNullOrEmpty(value);
        }
    
        public static bool NotNullAndNotEmpty(this string value)
        {
            return (!value.IsNullOrEmpty());
        }
    
        public static bool NotNullAndNotEmpty(this ICollection value)
        {
            return (value.NotNull<ICollection>() && (value.Count > 0));
        }
    
        public static bool IsNullOrEmpty(this ICollection value)
        {
            return (!value.NotNullAndNotEmpty());
        }
    }
     

    Es ist bequem (Gewohnheit.) ) für mich, um diesen Helfer zu verwenden, aber ich bin nicht sicher, ob es richtig ist (lohnt sich). Wie wäre es mit der Leistung? Gibt es andere Gründe, es nicht zu verwenden?

    12 February 2015
    Jamal
2 answers
  • Dies wird zu einem kritischen Punkt. Es gibt diejenigen, die leidenschaftlich argumentieren, dass eine Erweiterungsmethode niemals an einer null - Referenz arbeiten sollte, und es gibt diejenigen, die damit zufrieden sind.

    Ich persönlich kümmere mich nicht um Erweiterungsmethoden für null , wenn der Name ein klares Anzeichen dafür ist, dass null eine Möglichkeit ist (wie IsNullOrEmpty), aber als Ich sagte, das ist meine Meinung und kann mit anderen nicht übereinstimmen.

    Machen Sie sich keine Sorgen über die Leistung, Methodenaufrufe haben keine ernsthaften Auswirkungen und Überprüfungsmethoden wie diese beseitigen einige Lesbarkeit Bedenken hinsichtlich zusammengesetzter Ausdrücke bei der Pflege des Codes. Immerhin ist es das, was string.IsNullOrEmpty() tut, aber es tut dies durch eine statische Methode anstelle einer Erweiterungsmethode.

    Also die einzige Sorge, wirklich, können Sie das zurückschieben Dies sind Erweiterungsmethoden im Gegensatz zu gewöhnlichen statischen Methoden. Sie erhalten jedoch unterschiedliche Meinungen darüber, ob das Aufrufen einer Erweiterungsmethode für null schlecht / in Ordnung ist.

    Man könnte argumentieren, dass Microsoft LINQ-Erweiterungsmethoden für null -Sequenzen nicht zulässt. Andererseits unterbindet Microsoft auch generell keine Aufrufe von Erweiterungsmethoden für eine null -Quelle. p>

    Sie haben also die Wahl. Ich habe kein Problem damit, da die Namen eindeutig angeben, dass null eine akzeptierte Möglichkeit ist, aber ich sehe beide Seiten des Arguments.

    Nebenbei gesagt, würde ich Ihre Benennung konsistent halten:

    • NotNull - & gt; IsNotNull
    • NotNullAndNotEmpty - & gt; IsNotNullAndNotEmpty
    07 December 2011
  • Ich sehe nicht genau, was Sie mit dieser Helfer-Klasse gewinnen können. Die meisten Methoden, die Sie gezeigt haben, wirken wie Overhead. Zum Beispiel:

     public static bool IsNullOrEmpty(this string value) 
    { 
        return string.IsNullOrEmpty(value); 
    } 
     

    Obwohl Sie in Ihrem Code eine fließende Syntax erhalten. Die Leistung wird Sie nicht beißen, da Sie in Ihren Erweiterungsmethoden keine sehr schweren Dinge tun.

    07 December 2011
    ChristiaanV