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

    +121

    1. 1
    2. 2
    if (_flag_visible == true) obj.SetVisible();
    else if (_flag_visible == false) obj.SetInvisible();

    Запостил: Crazzy, 05 Января 2011

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

    • 4 говняшки на 2 строчки кода.
      вот и что мешало сделать obj.SetVisible(bool)?
      Ответить
      • Не, ну может быть класс (для определённости назовём его Obj), объектом которого является obj, не во власти программиста, писавшего этот код (например из какой-то библиотеки)

        Про сравнение переменной с логическими литералами и про else if действительно сказать нечего.

        А вот разработчика класса Obj в какой-то степени можно понять, setVisible(void)/setInvisible(void) можно расценивать как более читаемые по сравнению с setVisible(true)/setVisible(false).
        Хотя он мог бы:
        1) переименовать методы в show(void)/hide(void), чтобы названия были ещё более говорящими, ибо setXXX у многих ассоциируется с сеттером
        2) дополнительно сделать метод setVisible(boolean) для таких вариантов использования как этот
        Ответить
        • вот мой личный опыт и показывает, что лучше вместо пары методов setTrue() и setFalse() лучше писать setTrue(boolean) вот именно затем, что бы не использовать потом условные конструкции в коде.

          а еще мне нравится идея вместо
          Property getProperty()
          и
          void setProperty(Property property)
          писать
          Property property()
          и
          void property(Property property)
          , а в языках с необязательными аргументами(php,javascript и др.) можно обойтись
          Property property(Property property=null)
          , хотя это не соответствует общепринятым соглашениям, зато немного короче
          Ответить
          • Для вменяемых людей существуют свойста, заебали своими Set/Get
            Ответить
            • Вы расстраиваете TarasB.
              Ответить
            • их нет, например, в яве.
              Ответить
              • 1) Этот код на шарпе
                2) Ява не нужна
                Ответить
                • 1) на шарпе есть свойства
                  2) их еще нет в яваскрипте, пхп и т.д. = ))
                  Ответить
                • Свойства не нужны.
                  Ответить
                  • вы так говорите, буд-то это что-то плохое (ц)
                    Ответить
                    • как и всякий сахар, это может и помочь, и помешать.
                      тоже как аннотации в яве
                      Ответить
                • >Ява не нужна
                  Раз существует (и довольно давно), значит нужна. Не вещайте ярлыки, если не знаете.
                  Ответить
                  • Ты тоже существуешь
                    Ответить
                    • Ява не просто существует, но и используется.
                      Не нужна бы была - исчезла бы давно без следа.
                      Ответить
                      • И виндус существует и тоже используется и даже мак
                        Ответить
                        • Вы надеетесь, что я начну опровергать сам себя? :D
                          Ответить
                          • движенья нет, сказал мудрец брадатый,
                            другой смолчал и стал пред ним ходить.
                            сильнее не мог он возразить.

                            А.С. Пушкин
                            Ответить
                    • и даже вещает
                      Ответить
            • Какая разница, написать
              C := Color (геттер)
              или
              C := Color() (метод)?
              Ответить
              • А разница между
                obj.ID++;
                и
                int id=obj.getID();
                id++;
                obj.setID(id);
                видите?
                Ответить
                • В любом случае, при использовании свойств - писать меньше.
                  Ответить
                • только вот в Set-метод можно ввести проверку аргумента, например, на принадлежность диапазону 5000 ~ 9999, а для свойства придётся вводить проверочные условные конструкции в каждом месте где к нему обращаются. В итоге шило на мыло.
                  Ответить
                  • Учи матчасть! В том то и дело, что в свойстве можно сделать любые проверки, любой код. Это тебе не поле!
                    Ответить
                • В Д7 один хуй, нельзя передавать свойства по ссылке.
                  И я пишу
                  with Obj do SetID(GetID()+1);
                  Кстати, указатели на свойства в Сирешётке уже появились?
                  Ответить
                  • >В Д7 один хуй
                    Да мы знаем, что Д7 - это жопа. Зачем это повторять?
                    Не плачьте больше. Вам поможет только смена языка.
                    Ответить
                  • >В Д7 один хуй
                    Два даже не поддерживает?
                    Ответить
                    • Однажды С++ решил пошутить над WindowsGovno. Подкрался к нему ночью, когда он спал,и прилепил ему второй хуй, из пластилина. Наутро С++ проснулся от истошного вопля WindowsGovno.
                      - Что с тобой такой, WindowsGovno? - спросил С++
                      - Да вот представляешь - отвечает WindowsGovno - иду я сегодня в сортир, снимаю трусы - смотрю - а у меня два хуя! А зачем мне столько, ну я взял, и оторвал тот, который висел...
                      Ответить
                      • Археологи обнаружили скелет мамонта на глубине 20 метров. Это еще раз доказывает, что мамонты жили в норах.
                        Ответить
                        • Да я задолбаюсь рыть нору под свои габариты.
                          Ответить
                      • А вообще, два это полезно. Вам пока не понять.

                        Плохому танцору и один мешает.
                        Ответить
                  • >указатели на свойства в Сирешётке
                    Зачем Вам это? СШарп для этого не предназначен.

                    По ссылке в свойствах без проблем передаётся после автобоксинга.
                    Ответить
                  • with Obj do SetID(GetID()+1);
                    - и это замена для
                    obj.ID++;
                    ?
                    Ей Богу Вы троллите...
                    Ответить
                    • Зато сразу становится ясно, что это не инкремент простой фигни, а куча вызовов.
                      Ответить
                      • А это нужно? Языки высокого уровня для того и создавали, что-бы скрыть особенности реализации.

                        Сейчас в компиляторах с глобальной оптимизацией уже не возможно определить сколько вызовов и где сделает компилятор или что заинлайнит. Притом сделает это более оптимально, чем программист. Если дельфи до сих пор не научился делать это, то ему пора на погост или продолжить развиваться.
                        Ответить
                      • Вы хотели сказать, что Вам нужно это знать для оптимизации? Конечно, дельфи это сам не сделает и Вам придёться это делать вручную.

                        Действительно, зачем нанимать экскаватор, если есть лопата? :D

                        Смеяться после слова лопата.
                        Ответить
              • Если ты хочешь установить значение, установи:
                object.property = var;
                Хочешь взять его, возьми:
                var = object.property;
                Я думаю это намного лучше чем гет\сет и пр. А так же задумайтесь:
                object.GetProperty();
                Ответить
                • Здравствуйте, КЭП.
                  Ответить
                • Я должен умереть от лишних 5 символов в GetProperty() по сравнению с property?
                  Напугали паскалиста, ага.
                  Ответить
                  • >Напугали паскалиста, ага.
                    После
                    if then begin end;
                    заместо
                    if(){}
                    оно не страшно, ага. :)
                    Ответить
                    • Между прочим, чтобы ввести скобки, хоть круглые, хоть фигурные, нужно дополнительно жать Shift. Так что выгоды в нажатиях клавиш почти никакой.
                      Ответить
                      • >выгоды в нажатиях клавиш почти никакой
                        2 параллельных нажатия взамен 5ти последовательных?
                        Конечно, никакой, успокаивайте себя...
                        Ответить
                  • Но ведь эти 5 символов можно не писать. А так же метод GetProperty можно вызвать просто так, без присваивания его результата другой переменной.
                    Ответить
                    • > Но ведь эти 5 символов можно не писать.

                      Оно того стоит?

                      > А так же метод GetProperty можно вызвать просто так, без присваивания его результата другой переменной.

                      Можно отрубить эту возможность.
                      Ответить
          • хуясе
            тада возникает неоднозначность
            const size_t size() const { return m_size; }
            void size(cons size_t new_size = 0) { m_size = new_size; }

            (не конст obj).size(); - это вызов чего?
            Ответить
            • size_t size(size_t new_size = 0) {
               if(new_size != 0) m_size = new_size;
               return m_size;
              }
              Ответить
              • not all code paths return a value
                Ответить
              • с тем, что написано в
                http://govnokod.ru/5148#comment67841
                согласен, но предложенный вариант плох.

                лучше просто убрать значение по умолчанию и не ебать себе и ТарасуБ мозги
                Ответить
            • интересно как установить переменную в 0??
              Ответить
    • if (_flag_visible == true) obj.SetVisible();
      else if (_flag_visible == false) obj.SetInvisible();
      else obj.DoNothing();
      Ответить
      • говно, не проверяется случаё _flag_visible == true != false
        Ответить
      • if (_flag_visible == true) obj.SetVisible();
        else if (_flag_visible == false) obj.SetInvisible();
        else if(_flag_visible != true && _flag_visible != false)
           obj.SetSemiVisible();
        else obj.VindaGovno(true);
        Ответить
        • >VindaGovno
          Это мысль переодически посещает не только меня? Хорошо. :)
          Ответить
    • А вдруг obj.SetVisible(); с побочными эффектами? Ну мало ли - меняет значение _flag_visible ? Тогда else if приобретает смысл.
      Конечно, это всё гипотетически.
      Как обычно, невозможно сказать точно, не видя весь код.
      Ответить
      • > А вдруг obj.SetVisible(); с побочными эффектами?
        тем более говно = )
        Ответить
        • ахренеть. второй раз уже наблюдаю.
          ввел сообщение, но не каптчу - и пропустило! = )))
          Ответить
          • страшная каптча пугает только ее присутствием, а вводить необязательно = )))
            Ответить
          • Говнокод написан говнокодерами
            Ответить
            • Кстати, а где онанимусы?
              Ответить
              • вчерашнее расстроило Страйкера
                Ответить
                • А что вчера было?
                  Ответить
                  • Группа троллей под ником CPlusPlus начала резвиться. Я сдуру вступил в конфликт, так и мне досталось = )
                    Ответить
              • Ну, при попытке зайти гостем, выдало такое:
                "На сайте проводится профилактика, поэтому гостям нельзя писать комментарии до 1 января 2011."
                о_О
                Мы снова в прошлом, снова переживать встречу этого глупого праздника, снова столько выпить.. Бр-р-р.
                Ответить
                • Может забанить их не на год, а на пол? (только что-бы с каникулами не совпало) А то опять 1го января пьяные школьники начнуть бузить под новый год... Весь праздник испортят... :(
                  Ответить
              • >где онанимусы?
                Уже скучаете по ананистусам? Надолго же Вас хватило... Зачем они Вам? Неужели Вы ими пользовались? о_О
                Ответить
            • Вы КЭП?
              Ответить

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