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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
public class CheckBox : Control
{
	private bool _isChecked;

	public CheckBox(BizCheckBox source): base(source)
	{
		IsChecked = source.Checked;
	}

	public bool IsChecked
	{
		get
		{
			try
			{
				return Convert.ToBoolean(_isChecked);
			}
			catch
			{
				return false;
			}
		}

		set { _isChecked = value; }
	}
}

в место объявления автосвойства public bool IsChecked { get; set; }

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

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

  • Тут больше Convert.ToBoolean(_isChecked) смущает
    с блоком try catch
    Что должно случится с bool _isChecked, чтобы его преобразование к bool выкинуло исключение?
    Ответить
  • Мне кажется, тут почти все строчки лишние. Видимо, кто-то усердно на доширак строчками зарабтывал.
    Ответить
  • Хочу добавить немного того, что я видел.

    if (Convert.ToBoolean(ViewState["SomeValue"]) == false) { DoSomething(); }
    Ответить
    • уже было на ГК, кстати
      и в этом нет ничего особо крамольного, хотя, конечно, лучше
      if (ViewState["SomeValue"] as bool? ?? false)
      Ответить
        • :))) я просто именно на этом вопросе собаку съел - спорил про оптимальный вариант с архитектором, сделав кучу перфоманс-тестов
          Ответить
          • Где-то раньше по коду, к примеру в GET'е:
            protected void Page_Load(Object sender, EventArgs e)
            {
            if(!IsPostBack) ViewState["SomeValue"]="I want cookie";
            }

            И Ваш код с as никогда не вернёт true.
            Ответить
              • В начале был код, где в ViewState["SomeValue"] писался Boolean, а затем кто-то туда написал String. Соотв. тот, кто его читает, должен был вылететь с ошибкой, но с ошибкой он не вылетит, т.к. там уже строка...

                Это к тому, что as для другого хорош. Скажем, вытащить из объекта какой-то интерфейс или выполнить восстановительную логику (если приходится поддерживать несколько версий lecacy интерфейсов).

                А класть в Object значение, а потом вытаскивать его через as как-то экстремально для будущей поддержки и возможного рефакторинга.
                Ответить
  • > в место объявления автосвойства
    В каком году писан код? Под какой фреймворк? Может тогда ещё не было автосвойств.
    Но говёности кода это в любом случае не умаляет.
    Ответить
  • "public bool IsChecked" methood is to unsafe!
    Use the types comparison in get.
    Ответить
    • Приведена полная реализация класса.
      Где тут может быть небезопасное использоваение автосвойства.
      Если свойство которое тут объявлено, не делает ничего инного как меняет значение private поля, да еще и криво конвертируя bool в bool.
      Ответить

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

Переведи на "PHP", guest!

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


    8