1. Pascal / Говнокод #18887

    −19

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    for i:=l to h do // цикл от нижней границы массива до верхней
          case i-l of
            0 : User.ISN     := v[i];
            1 : User.DeptISN := v[i];
            2 : User.Dept0ISN:= v[i];
            3 : User.Roles   := v[i];
            4 : User.SLabel  := v[i];
            5 : User.LangISN := v[i];
            6 : User.ListDept:= v[i];
            7 : FConDM.UseLogger:=v[i]; //Риков Б. 2012
          end;

    Запостил: dim1r, 19 Октября 2015

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

    • а что в паскале можно как то по другому скастовать массив в объект ?
      Ответить
      • но зачем нужен цикл со switch-case ?
        Ответить
      • Если User — это record, а поля следуют подряд, то вариантов тьма:
        1. Приведение типа. Сработает, только если размер совпадает.
        2. var tmp: TUser absolute v[l]; ... ; User := tmp;
        3. Move(v[l], User, sizeof(User));
        Ответить
        • Зачем кому-то может понадобиться паскаль в современном мире?
          Ответить
          • Вот вам смешно, а в гугле на common lisp кто-то пишет https://google.github.io/styleguide/lispguide.xml
            https://www.itasoftware.com/
            Ответить
            • Мне заголовки понравились:
              • Lists vs. structures vs. multiple values
              • Lists vs. Pairs
              • Lists vs. Arrays
              • Lists vs. Sets
              • REDUCE vs APPLY
              • #'FUN vs. 'FUN

              Они специально провоцируют на срачи?
              Ответить
            • У них там даже вимскрипт зачем-то есть в стайлгайдах...
              Ответить
              • У них много народу вимом пользуется, наверняка плагинов тонна.
                Ответить
          • Есть проекты. В моем проекте 14 млн строчек на паскале *.pas + *.dfm.
            Ответить
        • >" Сработает, только если размер совпадает."
          Наверное, единственное объяснение -- вероятность получения массива другого размера.
          Ответить
      • >а что в паскале можно как то по другому скастовать массив в объект ?

        подругому очевидно так :
        User.ISN     := v[0];
        User.DeptISN := v[1];
        User.Dept0ISN:= v[2];
        User.Roles   := v[3];
        User.SLabel  := v[4];
        User.LangISN := v[5];
        User.ListDept:= v[6];

        Но фокус в том, что если массив пришел старой длины от старой подпрограммы, то может быть выход за пределы массива, а c циклом можно добавлять новые поля и выхода не будет.
        Ответить
    • При внимательном рассмотрении выясняется, что если l<>0 то работать не будет. Как минимум надо так
      for i:=l to h do // цикл от нижней границы массива до верхней
            case i-l of
              0 : User.ISN     := v[i-l];
              1 : User.DeptISN := v[i-l];
              2 : User.Dept0ISN:= v[i-l];
              3 : User.Roles   := v[i-l];
              4 : User.SLabel  := v[i-l];
              5 : User.LangISN := v[i-l];
              6 : User.ListDept:= v[i-l];
              7 : FConDM.UseLogger:=v[i-l]; //Риков Б. 2012
            end;
      Ответить
      • Не факт. Мы не знаем всех условий. Вдруг нужно копировать не с начала массива, а начиная с какого-то смещения?
        Ответить
        • да, точно, этож делфи, а не с++
          Ответить
          • Нет, язык тут ни при чём. Вы не написали ничего о структуре данных. Массив v может быть заполнен чем угодно.

            Из приведённого говнокода лично у меня сложилось впечатление, что User.ISN соответствует v[l]. Из Вашей же правки #comment300996 следует, что User.ISN соответствует v[0]. Читателю совершенно не очевидно, как же всё на самом деле.
            Ответить
            • Да, в этом проекте всё неочевидно. Несколько раз видел, как опытные программисты сначала с энтузиазмом начинают копать, но потом через 3 недели начинают истерить, материться и бить по столу. 14млн строк на делфи, 3млн строк на plsql и 500 тыс. на VB ActiveScript.
              Ответить
              • обоссать и сжечь
                Ответить
                • а пачку денег слабо сжечь ? :):):)
                  Ответить
                  • да ну нахуй, какая пачка денег за дельфи+vb?
                    купюрами по 10 рублей разве что
                    Ответить
                    • Вы наверное думаете, что платят только отличникам, которые делают все правильно: выравнивают код и делают коментарии к коду ?
                      Ответить
                      • > выравнивают код
                        Зачем выравнивать самому, есть это может сделать форматтер?

                        > делают коментарии к коду
                        Комментарии к коду обычно означают говённый код. Комментировать надо интерфейсы.
                        Ответить
                        • срочно просите надбавку к зарплате :):):):):)
                          Ответить
                        • Комментировать надо интерфейсы.
                          Золотые слова.
                          Ответить
                          • конфуз бывает, когда написано
                            procedure OpenFile // открытие файла

                            Все думают, "а фигня...это ж просто открытие файла" и пропускают дальше.
                            А в реализации какой-то brainfuck, который ничего не открывает, а что-нибудь рандомно портит.
                            Ответить
                            • В след за этим приходят злые пользователи функции и бьют автору апи по щщам.

                              К тому же, дока // открытие файла на редкость неудачна - она описывает вточности то, что есть в названии функции.
                              Писать надо в основном то, чего нет в названии: какие допустимые значения входных и выходных параметров, что будет, если открыть не получилось, как понять, открывать на чтение/запись и т.п. В идеале юзеры не должны лезть в код, чтобы найти ответы на типичные вопросы.

                              Ну и почему процедура? Открытый файл не возвращается?
                              Ответить
                              • оно самое!
                                прочитал коментарий, расслабился, а через неделю отладки понял, что расслабляться нельзя было :):):):)
                                Ответить
                            • У пыхарей обычно круче
                              /**
                               * Set params
                               *
                               * @param mixed $params
                               * @return mixed
                               * @throws \Exception
                               */
                              public function setParams($params);
                              Ответить
                              • У многих джавистов мало чем отличается :)
                                Ответить
                                • Но в жабе-то хоть нужно типы указывать. Или там можно просто "Object"?
                                  Ответить
                                  • Конечно, можно Object. Но даже если там будет тип Params, то сама дока лучше не станет, а вот типизация позволит разобраться, что именно нужно пихать.
                                    Ответить
                                • >У многих "джавистов" мало чем отличается :)
                                  fixed
                                  Ответить
                  • > а пачку денег слабо сжечь ?
                    Тогда зачем жаловаться? Или пачка всё-таки маловата, чтобы смириться с происходящим в коде?
                    Ответить
                    • >Тогда зачем жаловаться?
                      Я то не жалуюсь, только прикалываюсь
                      Смириться по началу трудно - это точно, Но в день ЗП наступает успокоение :):):)
                      Ответить
                      • Лучше беги оттуда, пока не поздно. Я так спился.
                        Ответить
                        • > Я так спился.
                          И начал смотреть аниме?..
                          Ответить
                          • Нет, аниме я начал смотреть, когда начал замечать,что все мои ровесницы превратились в старых непривлекательных коров. В 16 лет.
                            Ответить
                      • Лол, вы риальне на раьоте на паскале пишете
                        Ответить
                • Монгол дохуя?
                  Ответить
                  • Тарас, ты бы это, завязывал с дауншифтингом
                    тебя всё сложнее и сложнее понимать
                    Ответить
                    • Я понял, про кого эта карикатура:
                      http://warnet.ws/img5/19/komiks/7.jpg
                      Ответить
                      • Если сидеть дома с утра до вечера в инете - очень похоже получается. Ну сейчас разве что с поправкой на политоту в инете и телевизоре.
                        Ответить
                    • Да не, всё понятно вроде
                      Ответить
                      • Ты в натуре этот анекдот не знаешь?

                        Был случай, когда к Чингисхану подошла жена одного князя, с просьбой освободить её родных.
                        Чингисхан сказал:
                        — Вот, перед тобой стоят твой муж, твой сын и твой брат. Я отпущу только одного, кого выбираешь?
                        Не задумываясь, она ответила:
                        — Брата.
                        — Объясни мне, почему?
                        Женщина сказала:
                        — Мужа я могу найти, сына я смогу родить, а вот брата не могу создать.
                        После услышанного Чингисхан расчленил и обоссал всех троих ведь он монгол хули тут
                        Ответить
                        • живи так, что бы не надо было выбирать
                          Ответить
                          • Бабский совет.
                            Ответить
                            • ну, ладно выбирай, эксперт
                              Ответить
                              • Жить надо так, чтобы право выбора было именно у тебя. То есть чтобы быть этим монголом.
                                А у бабы была лишь иллюзия выбора.
                                Ответить
                                • я про тоже -- если так живешь, то не надо тратить энергию на выбор, так как всё, что выбираешь будет с хорошим для тебя.
                                  Ответить
                                  • У монгола есть выбор, расчленить князя или самого себя, и у этого выбора не все варианты хорошие для него.
                                    Ответить
                                    • вот я и говорю - живи так, что бы любой выбор был хорош
                                      Ответить
                                      • Ты другое сказал изначально.
                                        То, что сказал ты - невозможно. Всегда есть выбор обоссать начальника, и этот выбор имеет плохой вариант.
                                        Ответить
                                        • я вижу, у тебя есть понимание
                                          Ответить
                                          • Я нихуя не понимаю. Монгол, хуле.
                                            Ответить
                                            • значит вдвойне понимаешь, ибо монголы - офигенные буддисты :)
                                              Ответить
                        • Потомкам монголов виднее.
                          Ответить
                        • 😂😂😂😂😂😂😂😂😂😂 😂😂😂 я ржу третий час
                          Ответить
                        • Ты хуй
                          Ответить
              • Все говно собрали.
                Ответить
                • Зачем же так грубо о программистах? У них наверняка есть семьи, которые кормить надо.

                  Все ж мы люди.
                  Ответить
    • Риков Б. 1958 - 2012
      Ответить

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