1. C# / Говнокод #5535

    +15

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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, 04 Февраля 2011

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

    • ну или
      private readonly bool _isChecked;
      и классическое свойство
      Ответить
    • Тут больше 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.
              Ответить
              • Ой, IsPostBack тут явно лишний. Чтоб наверняка.
                Ответить
              • как можно вернуть true если внутри лежит строка??
                Ответить
                • В начале был код, где в ViewState["SomeValue"] писался Boolean, а затем кто-то туда написал String. Соотв. тот, кто его читает, должен был вылететь с ошибкой, но с ошибкой он не вылетит, т.к. там уже строка...

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

                  А класть в Object значение, а потом вытаскивать его через as как-то экстремально для будущей поддержки и возможного рефакторинга.
                  Ответить
    • > в место объявления автосвойства
      В каком году писан код? Под какой фреймворк? Может тогда ещё не было автосвойств.
      Но говёности кода это в любом случае не умаляет.
      Ответить
    • "public bool IsChecked" methood is to unsafe!
      Use the types comparison in get.
      Ответить
      • > is to unsafe
        есть - не безопасить, om nom nom
        Ответить
        • http://translate.google.com.ua/?hl=ru&tab=wT#en|ru|is%20to%20unsafe
          Ответить
          • [сапог-полено.txt]
            http://translate.google.com.ua/?hl=ru&tab=wT#ru|en|%D1%8F%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%BD%D0%B5%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%BC
            Ответить
            • Да, согласен.
              Причём в некоторых других то же.
              Иногда плохо, когда мысли опережают пальцы, ведь хотел написать is too unsafe.
              Справедливо получил минус один.
              Ответить
      • Приведена полная реализация класса.
        Где тут может быть небезопасное использоваение автосвойства.
        Если свойство которое тут объявлено, не делает ничего инного как меняет значение private поля, да еще и криво конвертируя bool в bool.
        Ответить

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