1. VisualBasic / Говнокод #8534

    −93

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    ' Return the current date & time converted to GMT in string format
    Public Function gf_GetGMTDateTimeString
    	Dim strDateTime
    	strDateTime=FormatDateTime(date(),vbgeneraldate) & " " & FormatDateTime(now(),vblongtime)
    	strDateTime=DateAdd("h", -5, strDateTime)
    	strDateTime=DateAdd("n", -30, strDateTime)
    	gf_GetGMTDateTimeString=strDateTime
    End Function

    Код из проекта на QTP, написанного индусами
    P.S. UTC+05:30 это Индия, для тех кто не понял

    Запостил: Lurker, 16 Ноября 2011

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

    • А вы ещё что-то там на Delphi гнали! Дело не в языке, а в человеке, который на нём пишет.
      Ответить
      • в данном случае - и в языке тоже
        Ответить
        • Поясни.
          Ответить
          • говно этого языка в том, что
            1. он чересчур многословен
            2. заставляет писать 10 строк, когда в другим языках, даже том же С++ можно уложиться в строчку
            3. слабая поддержка на уровне языка и полное отсутствие синтаксического сахара
            4. несмотря на поддержку ООП, любой листинг все равно отдает процедурщиной
            5. остальные заморочки и идиотские соглашения языка (вроде именования обработчиков событий)
            Ответить
            • 1. Читабельность повышается же!
              2, 3. Согласен.
              4. > процедурщиной
              Как будто что-то плохое.жпг
              5. Пример, пожалуйста.
              Ответить
              • 1. Зато понижается однородность, возникает необходимость больше писать. Например, заменяя цикл с For на While мы еще должны отыскать и заменить Next на Wend, при изменениях счетчика с i на j тоже надо заменить Next i на Next j, причем не в той же строчке
                4. Ну не улыбается все иметь на одном уровне вложенности

                5. кроме именования - например, вызов процедур без скобок, а функций - со скобками.
                Ответить
                • В тред реквестируется Тарас.
                  Ответить
                  • в качестве адвоката бейсика?
                    Ответить
                    • Чому бы и нет?
                      Ответить
                      • кстати, интересная штука:
                        когда я УЧИЛСЯ программированию, меня всякие бейсики и паскали устраивали.
                        когда же я освоил Перл, потом пхп, и, наконец, Яву, то решение задания\просьбы с использованием бейсика или паскаля было очень мучительным...
                        Ява, сирешетка и пхп развивают умственную неполноценность?
                        Ответить
                        • Нет, но насчет ПХП не уверен.
                          Ответить
                          • ну, насчет пхп - однозначно не рекомендую в качестве первого языка, т.к.:
                            1. жутко непоследователен в конструкциях (всегда привожу пример с "self:: но $this") и API
                            2. многовато вещей, поддерживаемых лишь "наполовину" - например, область видимости
                            3. слишком высокая прозрачность, позволяющая писать скрипты левой задней лапой, без понимания основ.

                            в итоге у начинающего не развиваются вдумчивость, внимательность, аккуратность и любознательность - столь необходимые в программировании качества
                            Ответить
                • >Зато понижается однородность
                  >For на While мы еще должны отыскать и заменить Next на Wend

                  Сколько можно повторять.
                  1.While ~ Wend - устаревшая конструкция, оставленная для совместимости со старым кодом.
                  2.В Си если нужно заменить do-while на for жоподвижений не меньше

                  Вот:
                  Do (While/Until <condition>)
                  ....
                  Loop  (While/Until <condition>)

                  Самый однородный и универсальный цикл, что есть.

                  Причем если написать просто do ~ loop без while/until и условий, то цикл будет бесконечным.

                  >тоже надо заменить Next i на Next j
                  можно просто писать Next без переменной, как собственно и делается.

                  Не знаешь языка не позорься.
                  Ответить
                  • смысл в том, что скобки не надо менять.

                    да, еще косяк вспомнил - в конструкции, вроде бы File Input#, нельзя было использовать элементы массива по индексу или поля обьектов, только переменные - из-за чего пришлось городить кучу темповых переменных
                    Ответить
                    • Помню, была такая лажа. Обычно фиксилось написанием удобных функций-оберток (или использованием готовых модулей) для работы с файлами.

                      И вот кейс мне нравится больше сишного
                      Select Case a
                      Case 10 To 20:
                      ....
                      Case 1, 2, 4:
                      ....
                      Case Else:
                      ....
                      End Select
                      Ответить
                      • сишный кейс - это позорное пятно на красном стане этого элегантного языка и, как следствие, всех, кто перенял его синтаксис - особенно по части обязательного употребления break;
                        вот где разработчикам следовало бы побольше обратиться к бейсику.
                        Ответить
                        • Зато необязательное употребление делает кейс приятным и легкопроходимым.
                          Ответить
                        • Поддержу обеими лопатами.

                          А если кто в свой язык перенимает сишный break в операторе выбора — это хороший тест на вменяемость.
                          Ответить
                          • Не хочу разводить холивор, но как тогда сделать кейс с проходом дальше?
                            Или я не догоняю тему.
                            Ответить
                            • А зачем? На ассемблере джампами и модификацией кода можно много чего натворить, но все предпочитают структурное программирование.
                              Ответить
                              • В конечных автоматах бывает полезно, вроде как.
                                Ответить
                                • Очень редко, один частный случай спагетти-кода.
                                  Ответить
                                  • Я соглашусь, что си-стайл свитч без break больше всего напоминает goto, и может приводить к разным ошибкам в логике. Но для каких-то грязных хаков он может быть полезен. Вроде как где-то всплывало использование при освобождении ресурсов. Переходим на строчку освобождения последнего выделенного ресурса и спускаемся вниз, освобождая остальные.
                                    Ответить
                                    • Не нужно. Есть RAII.
                                      Ответить
                                      • в ANSI C нет RAII.
                                        Ответить
                                        • Там вообще ничего нормального нет, так что анси си не нужен.
                                          Ответить
                                          • > анси си не нужен
                                            LOL
                                            Ответить
                                          • Глупо обсуждать перенос сишного свитча в другие языки, но при этом вспоминать сам Си. В него то мы не переносим из Си.
                                            Ответить
                                    • Это очень плохая практика. goto лучше — меткам можно дать осмысленные имена и они не поедут, когда добавим новый ресурс.
                                      Ответить
                                      • > goto лучше
                                        Там придётся явно делать goto для break, если вдруг понадобится.
                                        Ну, фиг знает, какое-то рациональное оправдание найти такой фиче можно.
                                        Ответить
                                        • В этом способе, заводится счётчик инициализированных ресурсов, который инкрементируется по мере инициализации ресурсов. При первой неудаче — goto в конец, на switch по этому счётчику, где по номеру в обратном порядке очищаются ресурсы.

                                          Но проще без счётчика, goto прямо на метку сразу после очистки этого неинициализированного ресурса. switch не нужен. Код проще, что в месте проверки, что в месте очистки.
                                          Ответить
                            • а может быть стоило бы так:
                              1.там где был оператор break - теперь его отсутствие
                              2.где его не было, теперь ставить оператор continue.
                              меня бы такой вариант более чем устроил бы.
                              Ответить
            • >он чересчур многословен
              Ласковая ухмылка появилась на лице Тараса.

              >даже том же С++ можно уложиться в строчку
              Лицо Тараса растянулось в улыбке.

              >ООП
              Улыбка потихоньку стала переходить в ехидную и появился легкий, но отчетливо слышный смешок.

              >любой листинг все равно отдает процедурщиной
              Тарас уже не мог сдерживаться, смех ставал все громче и потихоньку переходил в гомерический хохот.

              >полное отсутствие синтаксического сахара
              Тарас уже не смеялся, а рыдал.
              Ответить
              • да-да, тот же камень, что и в паскаль с дельфей
                Ответить
              • `-:::/:-:::.                     
                             `:oyNMMMMMMMMMMMMMmo:.`              
                          `:yNMMMMMMMMMMMMMMMMMMMMMMd:            
                        `+NMMMMMMMMMMMMMMMMMMMMMMMMMMMy           
                       `sMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMd.         
                     .yNMMMMMMMMMMMMNdhydMMMMMMMMMMMMMMMm`        
                    /NMMMMMMMMMNh+-`     -oyMMMMMMMMMMMMMd        
                    +MMMMMhso/-            `MMMMMMMMMMMMMM:       
                    .hMMh`                 `NMMMMMMMMMMMMMy       
                     `sN` `.  ::.`           /mMMMMMMMMmddd       
                      ds.--:-:.ymmd+:::`       sMMMMMMo:../:      
                      o+-hMh./:++ohNNNNMm:.     dMMMy..   `s      
                      `dMN+ -.     ..` `+:-`    oMM/  --` +/      
                      dMm+..-/`.- /yo++:/:`           :  `s/      
                      /y`+ysso: ` `-...               :..../      
                       -os--:+-                       ..  -.      
                        o. --:    .....               `.-s-       
                       -. -.:.    ` /  --    `        :`+N`       
                       /  : +/ `:.`.     -.. :        :.dy        
                       `: -.   ...-/syyyo:/: :        .:N+        
                        `:..`/yoooo/oooshm+/ /         :y         
                         `:--odhosymMNdmys :-.         ::         
                           ---/+hdss::---  //         .-:         
                            `:-:.......   :/`        :. :         
                              -+         -`-       .:   ./        
                               :          `        .     .-       
                               :`       --                +:.     
                                .o--....                  `s.-.   
                               `:`:`-.                     -- `--`
                              `:  .-                       ..    -
                              `    ``                      /      
                                                           `
                Ответить
            • Это точно не 1с? (Если выкинуть ООП, конечно.)
              Ответить
            • Забыл про "ON ERROR GO TO" :)
              Ответить
              • Оно-то так. Но ведь и в С изначально не было эксепшнов, а были коды ошибок. try-catch - это С++.
                А в новом бейсике ввели
                try
                catch
                finally
                end try

                А еще Вы забываете о такой классной штуке как
                On error resume next

                Кстати есть ли аналог сего в других языках:
                если что-то вывалилось с эксепшном - продолжить выполнение со следующей комманды?
                Ответить
                • Если только заюзать изврат с GOTO на следующую команду в Except.
                  Ответить
                • самая няшная конструкция бейсика - On Error Resume = )
                  Ответить
                • Да, ты прав, эксепшны в C++ появились уже после первого Визуального Васька. Но в Ваське механизм обработок исключений идет аж с PL/I, разработанного в 60-х. Там он назывался "on-units" или, по-русски, ловушками. Минусы были уже двадцать лет как очевидны - многие, начинавшие с семантикой продолжения, в процессе доработки от неё избавились - её было сложно оптимизировать и ещё сложнее отладить.
                  Ответить
              • Офигенская штука. Когда учился в школе программировать на бейсике, столько восторга было, что можно обработать случай, например, когда дискетка будет защищена от записи или переполнится. На большее идей не хватало.
                Ответить
                • ИТТ все соснули у Бейсика.
                  Ответить
                  • Ну не все.
                    А только критиканы Lure Of Chaos , например
                    Ответить
                    • что бы я еще раз что-то сделал на бейсике, паскале или с\с++? да ни в жисть
                      Ответить
                      • а я бы на сишечке написал бы что-нибудь эдакое
                        Ответить
                        • А я вот уже не смогу. Без локальных функций я уже жить не могу. Совсем.
                          Ответить
                          • > локальных функций
                            Это функции, объявленные внутри других функций (nested functions)? GCC так умеет, но в стандарте, этого, разумеется, нет.
                            Всегда хотел написать на C какого-нибудь полезного юниксового демона
                            Ответить
          • в общем, передразнивая себя же, бейсик - не руби.
            где перегрузка операторов, лямбды и т.д.?
            Ответить
            • Каждый язык создаётся для каких-либо конкретных задач. Бейсик например, бал создан для клепания формочек. ТАм не нужны лямбды.
              Ответить
            • Хм. Вообще-то, часть ваших претензий к Бейсику применима и к Руби.
              Ответить
              • там нету перегрузки операторов или лямбд?
                Ответить
                • Такая же эклетичность и несогласованность.

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

                    Я бы, правда, в таком случае пересмотрел бы язык и убрал некоторые не особо важные фичи в пользу стройности языка.
                    Ответить
                    • > буд-то
                      шиш-ка
                      Ответить
                      • да, спасибо.
                        будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто будто
                        Ответить
                    • Автор художник, он так видит.
                      Ответить

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