Запутывает ли расширение класса String с IsNullOrEmpty? - PullRequest
11 голосов
/ 26 апреля 2009

Все знают и любят метод String.IsNullOrEmpty (yourString).

Мне было интересно, может ли это сбить с толку разработчиков или сделать код лучше, если мы расширим класс String таким методом:

yourString.IsNullOrEmpty();

Pro:

  1. Более читабельно.
  2. Меньше печатать.

Минусы:

  1. Может сбивать с толку, потому что yourString переменная может быть null, и это выглядит как вы выполняете метод на null переменная.

Что вы думаете?

Тот же вопрос, который мы можем задать о myObject.IsNull() методе.

Вот как бы я это написал:

public static class StringExt
{
  public static bool IsNullOrEmpty(this string text)
  {
    return string.IsNullOrEmpty(text);
  }

  public static bool IsNull(this object obj)
  {
    return obj == null;
  }
}

Ответы [ 12 ]

0 голосов
/ 26 апреля 2009

Вызов метода для переменной с нулевым значением обычно приводит к исключению NullReferenceException. IsNullOrEmpty() -метод отклоняется от этого поведения таким образом, что это не предсказуемо при простом взгляде на код. Поэтому я бы посоветовал не использовать его, поскольку это создает путаницу, а польза от сохранения пары символов минимальна.

0 голосов
/ 26 апреля 2009

Я думаю, что расширение любого объекта с помощью вызова типа "IsNull" немного сбивает с толку, и его следует избегать, если это возможно.

Можно утверждать, что метод IsEmptyString может быть полезен для типа String, и, поскольку вы обычно комбинируете это с проверкой на нулевое значение, IsNullOrEmpty может быть полезен, но я бы этого тоже избегал, поскольку в строковом типе уже есть статический метод, который делает это, и я не уверен, что вы экономите столько времени при наборе текста (не более 5 символов).

...