Pull to refresh

Comments 4

Проверка RetentionTimes.Count != 1 лишена смысла, так как перед этим проверяют RetentionTimes.Count == 0.


public virtual void Validate()
{
  if (RetentionTimes == null 
    || RetentionTimes.Count == 0 
    || RetentionTimes.Count != 1)
  {
    throw new ArgumentException(
      Resources.InvalidRetentionTimesInPolicyException);
  }
}


Тут не избыточная проверка на RetentionTimes.Count != 1, а избыточная проверка на RetentionTimes.Count == 0. Этот код проверяет что коллекция не null и имеет ровно один элемент. Вот пример кода, показывающий эту проверку в действии. Если убрать RetentionTimes.Count != 1, то условию будут удовлетворять любые не пустые коллекции, а это уже совсем другое условие.

Автору этого стоило более явно выразить это условие:
if (RetentionTimes?.Count != 1) {
    throw new ArgumentException(Resources.InvalidRetentionTimesInPolicyException);
}
Тут не избыточная проверка на RetentionTimes.Count != 1, а избыточная проверка на RetentionTimes.Count == 0.

Почему? Автор явно хочет, что бы код отрабатывал в 2-ух случаях, когда переменная null или =0.

Если переменная ==0, то она по определению не может быть ==1. И проверка тут скорее на пустую коллекцию.
Спасибо. Подправил.

Всё так. Мы в джаве в аналогичном коде даже квик-фикс предлагаем:


Sign up to leave a comment.