Си диез / Говнокод #8045 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
private bool IsChanged(string name, string surname, string patronymic, string email, bool? sex = null, byte[] avatar = null, DateTime? birthDate = null, string address = null)
        {
            bool r1 = sex == null ^ Sex == null ? true : (sex != null ? sex.Value != Sex.Value : true);
            bool r2 = birthDate == null ^ BirthDate == null ? true : (birthDate != null ? birthDate.Value != BirthDate.Value : true);
            bool r3 = address == null ^ Address == null ? true : Address != address;
            bool r4 = avatar == null ^ Avatar == null ? true : (avatar != null ? !Avatar.IsEqual(avatar) : true);
            bool r = Name != name || Surname != surname || Patronymic != patronymic || Email != email;
            return r | r1 | r2 | r3 | r4;
        }

Запостил: dotnetdeveloper dotnetdeveloper, (Updated )

Комментарии (16) RSS

  • Может просто конкатенацией значений и последующим сравнением строк?..
    Ответить
  • О «ленивых» булевских операторах автор не слышал? А, вижу в 7-й строчке ||, это, наверное, опечатка.
    Ответить
    • return !object.Equals(name, Name) || !object.Equals(surname, Surname) || !object.Equals(patronymic, Patronymic) || !object.Equals(email, Email) || !object.Equals(sex, Sex) || !object.Equals(avatar, Avatar) !object.Equals(birthDate, BirthDate) || !object.Equals(address, Address);

      Фиксед?
      Ответить
    • "Ленивые", "быстрые" сколько названий не встречал. Какой мудак это придумал? Всегда были побитовые и логические.
      Ответить
      • Наверное такой, который понимает разницу между «ленивыми» и не «ленивыми» вычислениями.
        Ответить
      • Ммм, и на каком стандарте вы застряли, сударь? И стандарте чего, собственно говоря? xD
        Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8