C #: методы расширения и оператор Not - PullRequest
2 голосов
/ 01 декабря 2010

У меня есть массив строк, и я хочу выяснить, не содержит ли этот массив определенную строку.Я могу использовать оператор not (!) В сочетании с методом Contains следующим образом:

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

Оператор not (!) Может быть пропущен при сканировании кода, поэтому мне интересно, считается ли это плохой практикойсоздать метод Extension в попытке улучшить читаемость:

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

Итак, теперь код может читать:

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

Не одобряется ли такая вещь?

Ответы [ 12 ]

1 голос
/ 01 декабря 2010

Когда !something не работает, тогда возвращайтесь к something == false.

1 голос
/ 01 декабря 2010

Я лично сделал бы метод расширения для этого, если бы собирался использовать это довольно часто в рамках проекта. Если это один раз, то я бы не стал беспокоиться, но это неплохая практика.

Причина, по которой я бы это сделал, заключается в том, что if () имеет больше взгляда на происходящее. Хорошо, если каждый, у кого есть мозговая ячейка, знает, что делает текущее утверждение, но оно выглядит лучше. Тогда у каждого будут свои предпочтения ...

Я сделал метод расширения для форматирования строк, чтобы улучшить поток кода ...

...