1. JavaScript / Говнокод #23491

    +2

    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
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    // куча if и небольшой кусок логики
    // ...
                   } else {
                      response["message"] = "Access Denied";
                      response.shortlist = undefined;
                      callback(response);
                    }
                  } else {
                    response["message"] = "Access Denied";
                    response.shortlist = undefined;
                    callback(response);
                  }
                } else {
                  response["message"] = "Access Denied";
                  response.shortlist = undefined;
                  callback(response);
                }
              });
            } else {
              response["message"] = "Access Denied";
              response.shortlist = undefined;
              callback(response);
            }
          } else {
            response["message"] = "Access Denied";
            response.shortlist = undefined;
            callback(response);
          }
        } else {
          response["message"] = "Access Denied";
          response.shortlist = undefined;
          callback(response);
        }
      } else {
        response["message"] = "Invalid Method";
        response.shortlist = undefined;
        callback(response);
      }

    Запостил: rkgrep, 04 Ноября 2017

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

    • Ну, на гоаноязыке трудно писать красивый код)
      Ответить
      • да, но даже на говноязыке можно сделать таблицу и описать это в декларативной манере
        Ответить
      • Зря Вы так, js хороший язык, красивого кода на js много. Просто говнокодеры тоже не дремлют
        Ответить
        • Чем же он красивый? Я не новичок в нем, начинал ещё с IE 6, написал даже как-то визивиг. Сейчас правда в основном с jquery сталкиваюсь. Что в нем на мой взгляд убого: отсутствие ООП в классическом понимании, отсутствие параметров по умолчанию у функций. Приведение типов и проверка типов странное. Колбэки (это ладно, вытекает из асинхронность). Очень мало встроенных возможностей, никаких тебе inArray и т.п, что порождает кучу велосипедов. Работа с датами...это какой-то кошмар. Сколько бы ни сталкивался, всегда это жесткий батхерт. Если в том же php всё понятно и логично почти с самого начала, то в js просто фейспалм а не API для дат...и ещё много всего. Это то что приходит на ум сразу. Допускаю, что возможно что-то уже неактуально, но в своё время натерпелся и никогда бы не стал работать на чистом js. И тотальное помешательство на нем сейчас устрашает
          Ответить
          • JS Не задумывался как ооп язык, он использует функциональное программирование.
            https://learn.javascript.ru/es-class - классы есть
            Параметры в функциях по умолчанию, ну если очень хочется, то в новой спецификации это тоже есть -
            https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Functions/Default_parameters
            Очень мало встроенных возможностей - Зайдите на npm и подключайте momentJS для удобной работы с датами (если стандартное не нравится) loadash для работы с массивами, если не нравится стандартная работа с массивами.
            https://habrahabr.ru/company/mailru/blog/329258/ - бенчмарки
            Не путайте "понятно и логично" с привычно и знакомо.
            Колбеки - это зло, согласен, не рекомендую использовать их ни в одном языке программирования, почитайте про callbackHell, если раньше не слышали.
            В js есть промисы, есть очереди, производительность nodejs серверов на высоком уровне.
            У вас когда-то не получилось что-то, не так как на php - значит говно?
            Ответить
            • >>JS Не задумывался как ооп язык, он использует функциональное программирование.
              Что?
              Где в JS функциональное программирование?
              Ответить
              • Паскалефобы боятся употреблять слово «процедурное». Они от него краснеют, как благородные девицы.
                Ответить
                • Думаете он спутал функциональное и процедурное программирование?
                  Ответить
                  • Подозреваю.

                    В JS (с тех пор, как появились объекты) есть ещё прототипное программирование. Можно, конечно, предположить, что он спутал функциональное и прототипное, но нам остаётся только гадать.
                    Ответить
                    • В JS объекты были почти с самого начала, просто синтаксис для их создания был отвратительный и язык позицинировался как прототип-ориентированный, а не класс-ориентированный
                      Прототип-ориентированность это частный случай ООП. Так что товарищ запутался
                      Ответить
                      • Могу подкинуть идею, чтобы ещё больше всех запутать. В JS есть логические операторы: |, &, ||, &&, ^, ~, !. Значит, в нём есть логическое программирование.
                        Ответить
                        • В таком случае структурное программирование есть только в C, C++, C# и Ruby.

                          А если без шуток, но проблема JS, имхо, именно в том что за 20 лет так и не были разработаны удобные практики для прототип-ориентированного программирования, а для класс-ориентиованного они есть.

                          Люди пытаются эмулировать класс-ориентированный подход в JS и потому он выглядит как говно, прикрученное к стенке синей изолентой.

                          В ES2015 наконец признали что нужность нормального синтаксиса для класс-ориентированного подхода.

                          Там теперь стало можно
                          class Makaka {
                            constructor(banan) {
                              this.banan = banan;
                            }
                          }
                          Ответить
                          • Зато какую романтику доставляет прототип-ориентированный подход! Вот берём Мурманский полуостров пустой объект, накручиваем чёрный хлеб методы, и вырастает Илья Муромец полноценный объект. Приходится развивать мозг, думать о том, сколько памяти будет сжирать объект при копировании (методы ведь накрутить можно разными способами).

                            Эх, пыхомакакам не понять...
                            Ответить
                            • Сразу видно что этот подход в экономике, так сказать, необходим.
                              Ответить
              • Ну что же Вы. ФВП, функция как значение; замыкания; реализованные Array.prototype.map, ...reduce, ...filter. Из косвенного - GC, чтобы отдельно не следить за возвращаемыми значениями; иммутабельные строки.
                Ответить
                • В такой же степени это всё есть в Python, Ruby, Kotlin, C# и немножко даже в Java8.

                  А иммутабельные строки и возможность передавать указатель на функцию есть даже в C :)

                  JS мультипарадигменный ЯП.
                  Ответить
                  • >>> Где в JS функциональное программирование?
                    > В такой же степени это всё есть в
                    > JS мультипарадигменный ЯП.
                    Не сказал бы что, наличие этих возможностей в других языках, и наличие других возможностей в самом JS делает язык категорически не функциональным.
                    Зашквар императушнёй тут не должен использоваться в качестве важнейшего аргумента, т.к. для ввода-вывода всё равно придётся выйти из чистого мирка.
                    Ответить
            • >>У вас когда-то не получилось что-то, не так как на php - значит говно?
              нет. я начал писать на этих двух языках приблизительно одновременно. и если с php было всё всегда хорошо, то с js батхерт. не потому, что не так как в php. и даже не из-за кроссбраузерности... а просто говно, просто говняное и непродуманое api, раз сколько бы не сталкивался, всегда приходится лезть в доку.
              удивительно, что даже классы появились, и даже параметры по умолчанию, просто чудо какое-то, и года не прошло...) то, что это сейчас появляется - только подтверждает мои слова. оно там должно было быть с самого начала. в общем говно...но это сугубо моё мнение, я никому его не навязываю, а просто поделился им. а еще, забавная фича...из-за отсутсвия этих самых классов столько вариантов по организации кода, там тебе и объекты, и функции и модули и всё перемешано...)
              Ответить
              • >>просто говняное и непродуманое api
                это говорит программист на php?;)
                Ответить
                • аргументируйте, пожалуйста. php не идеален, да. но когда я на нем пишу я отдыхаю, когда на js - нет.
                  Ответить
                  • Пожалуйста.
                    https://habrahabr.ru/post/142140/


                    Но JavaScript тоже ужасен, я даже не знаю кто страшней.
                    Ответить
                    • видел, читал. 2012 год, статье 5 лет. много вещей субъективных (на мой взгляд). и еще, js не косил бы под php https://javascript.ru/php , если бы был лучше
                      Ответить
                      • В дискуссии "хорошая/плохая технология" почти все субъективно. Чтобы понять минусы языка нужно знать еще два-три языка примерно того же уровня чтобы было с чем сравнивать, иначе будет парадокс блаба
                        Ответить
                        • проблема в том, что на фронтенде нет у него альтернативы (всякие typescript не в счет), так что тут эта теория не работает
                          Ответить
                          • Всё что угодно можно скомпилировать в JavaScript, так что обсуждать язык имеет смысл без привязки к конкретной области.

                            Но наличие его в браузерах это, конечно, единственная причина, почему он до сих пор жив. Если бы не это, то он давно бы уже оказался на свалке.
                            Ответить
                            • Наличие его в браузерах — это также причина некрасивых приёмов программирования на нём, потому что разработчику приходится пользоваться устаревшими конструкциями и костылями, чтобы охватить максимальное количество браузеров.

                              Кстати, а какие альтернативы были в браузерах? Я помню, что в IE раньше был vbscript.
                              Ответить
                              • В IE был (и остается) любой язык, интерпретатор которого установлен как COM объект с интерфейсами IActiveScript и IActiveScriptParse.
                                https://docs.microsoft.com/en-us/scripting/winscript/windows-script-engines.

                                Этот же "Script Engine" работает в WSH ("скриптики на локальной машине"), и он же работает на бекенде веба в IIS ("ASP classic")

                                Разница только в доступных ему объектах: DOM модель в браузере, HTTP request в IIS и всякие WshShell в WSH.

                                Винда уже лет 20 шипит с собой два скриптинг энджина: JavaScript (для вебовцев) и VBScript (для людей с бекграундом в VB).

                                Так что в Windows еще 20 лет назад можно было писать на Одном Языке (JS) и на бекенде, и на фронтэнде (за долго до nodejs, лол!).

                                К сожалению, кросс-платформенность гарантирована только для JS.
                                Гугл пытался протолкнуть свой Dart. Язык симпатичный, но кроме Chrome его никто не захотел уметь, увы, и Гугл на него забил.
                                Так что альтернатив нет.

                                Но! Если смотреть на Ecma 262 как на виртуальную машину, то писать можно на чем угодно, и потом просто под нее компилироваться. Выбор огромен: kotlin (js compiler), java (gwt) ,python (sculp) итд.

                                Но придется шипить рантайм и стандартную либу этих языков (в браузере=то ее нет), так что это отлично подходит для single-page apps (которые весят 15 мегабайт, грузятся один раз и потом 3 часа работают), а вот делать выпадающие меню для сайтика на этом всем тяжко
                                Ответить
                                • > Гугл на него забил
                                  Не совсем.
                                  https://flutter.io/
                                  Ответить
                                  • ого) мобильные изоморфы на дарте?)

                                    Вот все мило в дарте, но зачем там ключевое слово "new"? В языках где программист не может вручную управлять размещением объекта на стеке/куче, где у тебя никогда нет объектов, а есть только указатели на них -- в таких ЯПах "new" только место занимает.

                                    Это поняли в Kotlin, например.
                                    Ответить
        • А кстати
          покажите красивый код на JS
          просто интересно
          Ответить
          • Чувствую, что любой мой ответ окажется неверным, но раз спросили
            К примеру https://github.com/jasmine/jasmine/blob/master/Gruntfile.js
            Ответить
    • goto — это плохо, ясненько?
      Ответить
    • так я не понял доступа что ли не будет
      Ответить
    • Дороги все до одной приходят сюда.
      Ответить

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