Search code examples
c#code-readability

C#: Extension methods and the Not operator Best Practice


I have an array of strings and I wish to find out if that array does not contain a certain string. I can use the not operator (!) in conjunction with the Contains method like so:

if (!stringArray.Contains(searchString))
{
    //do something
}

The not operator (!) might be overlooked when scanning the code so I was wondering if it was considered bad practice to create an Extension method in an attempt to enhance readability:

public static bool DoesNotContain<T>(this IEnumerable<T> source, T value)
{
    return !source.Contains<T>(value);
}

So now the code could read:

if (stringArray.DoesNotContain(searchString))
{
    //do something
}

Is this sort of thing frowned upon?


Solution

  • Keep the !. This is where a comment above the line would help readability.
    (I suspect ! is more efficient)

    //If the word is NOT in the array then...
    

    Another point is to whether you are dead-set on using an Array? There is something (that you may or may not know about) called a HashSet.

    If your sole purpose is to examine whether or not a string is in a list, you are essentially looking at set arithmetic.

    Unless you are using the array for something other than finding out whether a certain term is in it or not, try using a HashSet...much faster.