На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (7) « Первая ... 2 3 [4] 5 6 ... Последняя » все  ( Перейти к последнему сообщению )  
> Чистота кода VS оптимизация
    Цитата Vesper @
    И потом нарываешься на хитро закопанные грабли в виде смены ключей оптимизации кода, и выясняется

    А причём тут оптимизация? && и || обязаны выполняться по-порядку, и оптимизатор не имеет права их переставлять.
      Vesper, ну это ж не Delphi, там бы {$B-} был. Ну и это отчасти троллинг примера Серафима, а отчасти... ну мне тоже нравятся такие конструкции и нагромождения всякие (усложнения) :)
      А && имеет более высокий приоритет, чем ||.

      Добавлено
      Есть ещё замечательная операция xor (^).
      Тоже можно побаловаться а-ля if (x ^ y) doSmthng();
      Видимо, ^^ не стали делать как раз от греха подальше :D

      Добавлено
      Serafim, вот скажи. Ну нафига фигурные скобки для if (while, for... нужное подчеркнуть), который прописан в одну строку?
      Собственно, это смежно с if (id) fetch('/data/' + id);
        Цитата Jin X @
        Больше похоже на обфускацию, а не упрощение кода

        Ну не говорить же, что if тут будет лучшим вариантом, только за опускание фигурных скобок всё равно надо отрубить что-нибудь лишнее)) Так что пришлось выкручиваться.

        С другой стороны, мне кажется нормальным использование switch/case для однотипных условных операторов. Кажется, что для этого он и был предназначен, не?)
          Я понимаю, что какой-нибудь ландырь может по запаре забыть поставить скобки, но при наличии выравнивания этот косяк сразу будет виден...

          Добавлено
          Эх, не успел склеить с предыдущим сообщением <_<

          Добавлено
          Цитата Serafim @
          Кажется, что для этого он и был предназначен, не?)
          ИМХО, он был (хорошее слово) предназначен для проверки 1 переменной на разные значения, а не наоборот :)
            Цитата Jin X @
            Serafim, вот скажи. Ну нафига фигурные скобки для if (while, for... нужное подчеркнуть), который прописан в одну строку?

            Для языков, которые я использую - это общепринятый стандарт, всё равно потом CS поправит код в CI, так что пофигу.

            Да и вообще, ГОСТ для C/C++, кажется, есть на эту тему :whistle:
              Цитата Serafim @
              Но это всё имеет смысл, когда подобных операций больше трёх.
              Когда больше трёх, ИМХО, лучше использовать не отдельные переменные, а множество, к примеру...
                Цитата Jin X @
                ИМХО, он был (хорошее слово) предназначен для проверки 1 переменной на разные значения, а не наоборот

                Допускаю, что ты прав. Но это не значит, что обратный случай - плохой.
                  Цитата Serafim @
                  ГОСТ
                  СНиП и СанПиН :)
                    Цитата Jin X @
                    Когда больше трёх, ИМХО, лучше использовать не отдельные переменные, а множество, к примеру...

                    +1
                      Serafim, кстати, что ты думаешь об if (smthngBad1 && (i=1) || smthngBad2 && (i=2) || smthngBad3 && (i=3)) ? :P
                        Цитата Jin X @
                        Видимо, ^^ не стали делать как раз от греха подальше

                        Не от греха подальше, а потому что операция бесмысленна. Главное отличие || от | (&& и &, соответственно), помимо того, что одна - логическая, а вторая - побитовая в том, что первая ещё и ленивая. А вот ^^ ленивой не сделать.

                        Цитата Jin X @
                        Vesper, ну это ж не Delphi, там бы {$B-} был.

                        Хм, прочитал про это. Какому идиоту вздумалось вводить этот ключ? :unsure: Это же трындец какой-то.
                          Цитата Jin X @
                          Serafim, кстати, что ты думаешь об if (smthngBad1 && (i=1) || smthngBad2 && (i=2) || smthngBad3 && (i=3)) ?

                          Это печально :) Сам иногда говнокодю, делая присваивания в условиях, но не до такой степени :D
                            Цитата Serafim @
                            Сам иногда говнокодю, делая присваивания в условиях, но не до такой степени :D

                            Эй, а он не безнадежен! :D
                              Цитата OpenGL @
                              А причём тут оптимизация? && и || обязаны выполняться по-порядку, и оптимизатор не имеет права их переставлять.
                              При этом они ещё точки следования вставляют, так что ++ в безопасности.
                              Цитата Jin X @
                              Видимо, ^^ не стали делать как раз от греха подальше
                              Это обычное !=. Зачем?
                                Цитата OpenGL @
                                Не от греха подальше, а потому что операция бесмысленна. Главное отличие || от | (&& и &, соответственно), помимо того, что одна - логическая, а вторая - побитовая в том, что первая ещё и ленивая. А вот ^^ ленивой не сделать.
                                Если под ленивой ты подразумеваешь проверку одного условия из 2-х (если оно true для ||), то отчего ж && не ленивая (при первом false)?

                                Цитата Qraizer @
                                Это обычное !=. Зачем?
                                Точно. Тормознул чё-т я :facepalm: :) (see below)

                                Цитата Serafim @
                                но не до такой степени
                                Ну ладно... if (smthngBad1 || ++i && smthngBad2 || ++i && smthngBad3)
                                Как будто бы и не присвоение почти :D
                                (на всякий случай скажу, что согласен, что это говнокодинг, но выглядит прикольно, поэтому иногда так и подмывает так писать)

                                Добавлено
                                Цитата Qraizer @
                                Это обычное !=. Зачем?
                                Цитата Jin X @
                                Точно. Тормознул чё-т я
                                Хотя нет, не тормознул...
                                5 != 7 = true
                                но
                                5 ^^ 7 = false

                                Добавлено
                                Если только так извращаться:
                                ExpandedWrap disabled
                                  var x=5, y=7;
                                  alert((x&&1) != (y&&1));  // false
                                но это бред.
                                Сообщение отредактировано: Jin X -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0987 ]   [ 15 queries used ]   [ Generated: 2.05.24, 08:16 GMT ]