ЙажаСценарий / Говнокод #25689 Ссылка на оригинал

0

  1. 1
this.checkArrayErrors() ? (this.canSend = true) : (this.canSend = false);

Код разраба, который не прошел испытательный срок и сказал что к нему придираются.

Запостил: UnQu1et UnQu1et, (Updated )

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

  • вернятно он где-то слышал что "ифы можно замегнить тренарником"
    Ответить
    • Не вероятно, а так и есть. Он вообще от ифов везде отказался и сказал, что пишет в функциональном стиле
      Ответить
      • Этот говнокодик конечно не имеет отнощения к функицональщине
        Ответить
  • Разве за такую хуйню увольняют? Максимум – высмеять да отправить переписывать
    Ответить
    • За единожды нет. Но такого рода код и похуже у него встречался в каждом реквесте и мы устали его тыкать, тем более он не признавал, что это плохой код
      Ответить
      • почому не
        this.canSend = this.checkArrayErrors(); ?
        Ответить
          • Да, можно было бы оправдаться, что это для приведения типа, но в JS уже принято приводить тип к булевому другим способом. Для этого нужно громко кричать:
            this.canSend = !!this.checkArrayErrors();
            Ответить
            • Испанская мушка тебя укусила.
              Ответить
    • Оказывается, мы совершенно зря сегодня спорили.
      Есть пакет wu, и там всё есть
      const wu = require("wu");
      
      
      class User {
          constructor(id) {
              this.id = id;
          }
      }
      
      const users = wu(wu.count()).filter(n => n % 13 === 0).map(n => new User(n)).take(20).toArray();
      console.log(users);
      Ответить
  • > JavaScript
    > испытательный срок
    Такое бывает?
    Ответить
    • Предпочитение соискателям, которые умеют самостоятельно завязать шнурки
      Ответить
      • Предпочтение соискателям, пишущим на фреймворке выпущенном не позднее мая 2019-го
        Ответить
    • В любой конторе есть испытательный срок 3 месяца. Как видишь, в данном случае он себя оправдал.
      Ответить
  • > new Boolean(false);
    [Boolean: false]
    > if (new Boolean(false)) {console.log("guck");}
    guck


    но Boolean(false) все равно false
    а с new у нас враппер коий в булевом контексте означает true

    сука, джаваскрипт не для средних умов



    БЛДЬ
    Ответить
    • Сейчас набегут опытные джаваскриптеры и пояснят тебе за щеку, что ты просто не понимаешь всю глубину концепции.
      Ответить
    • Наши булы — не то, что другие булы! Наши булы не имеют аналогов в мире!
      Ответить
    • Я вообще не понимаю, нахрена козе баян new в языках с GC. Сначала «Java» тупо скопировала с крестов эту абсолютно ненужную (даже в крестах) конструкцию, потом жабаскрипт скопировал её хуй пойми с кого...

      В «Python» нет никакого «new», именно поэтому я за «Python».
      Ответить
      • Дело не в GC, а в том что объект всегда располагается на куче (во всяком случае семантически)
        Выбирать между его расположением программист не может, так что смысла в "new" нет.

        К сожалению, обезьяны (а большинство программистов -- обезьяны) любят обезьянничать. Вот и скопировали нахуй не нужный new. И в жабу и в сишарп и в js и в php просто не включая мозг.

        В kotlin его уже нет, и в python тоже. Там люди подумали.

        А еще в java есть нахуй ненужное слово extends и оно отличается от implements.
        Этого говна даже в C++ нету и в C# нету и в kotlin.

        Угадайте, кто его скопировал? Правильно, php и частично JavaScript.

        Обезьяны, что с них взять?
        Ответить
        • >> А еще в java есть нахуй ненужное слово extends и оно отличается от implements.
          >> Этого говна даже в C++ нету

          В C++ есть чистые интерфейсы?
          Ответить
          • нету, но и в JS их нету, а слово extends есть (А в C++ нету)

            В Java и kotlin интерфейсы могут иметь дефалтные имплементации

            То-есть интервейс это тот же класс (нобез филдов), просто можно наследовать два интерфейса

            Чуствуешь неконсистентное говно?
            Интерфейсы не нужны. Нужны pure abstract классы и множественное наследование.
            Все таки в C++ степень обезьянности меньше. Язык может быть и так себе, но откровенного идиотизма там меньше чем в его последователях


            зы: Дестктоп, поясни за стрижа. Чем протокол с дефалтн имплементацией отличаца откласса
            Ответить
            • Экземпляр протокола ты не можешь инстанциировать, неважно, есть у него default implementation или нет.
              Ответить
              • Ну сиречь это абстрактный класс просто
                Ответить
                • Любой интерфейс/протокол это абстрактный класс в терминах С++, нет?
                  Ответить
                  • Да.

                    А то, что в ObjC называлось @interface там просто декларация
                    Ответить
                • вообще зацените раздрай

                  в паскале есть интерфейс модуля и его реализация
                  в с++ этот интерфейс называется декларацией, а то что джависты называют
                  интерфейсом это pure abstract class.

                  в objc декларация называется интерфейсом, а интерфейс -- протоколом
                  в swift отдельной декларации нет, и там остался только протокол

                  в c# и java в отдельной декларации смысла нет, и протокол там называется интерфецсом, впрочем если вы не хотите давать дефиницию, то можете выдать только интерфейс и он, по сути, тоже будет декларацией
                  Ответить
                    • да, это как в C++ сказать

                      class Foo;

                      а потом в другом месте его реализовать
                      Ответить
                      • Можно ничего не реализовывать и радовать линковщик
                        Ответить
                        • error LNK2001: unresolved external symbol "public: __cdecl Foo::Foo(class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::vector<class std::map<int,bool,struct std::less<int>,class std::allocator<struct std::pair<int const ,bool> > >,class std::allocator<class std::map<int,bool,struct std::less<int>,class std::allocator<struct std::pair<int const ,bool> > > > >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class std::vector<class std::map<int,bool,struct std::less<int>,class std::allocator<struct std::pair<int const ,bool> > >,class std::allocator<class std::map<int,bool,struct std::less<int>,class std::allocator<struct std::pair<int const ,bool> > > > > > > >)" (??0Foo@@QEAA@V?$map@V?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@st d@@V?$vector@V?$map@H_NU?$less@H@std@@V? $allocator@U?$pair@$$CBH_N@std@@@2@@std@ @V?$allocator@V?$map@H_NU?$less@H@std@@V ?$allocator@U?$pair@$$CBH_N@std@@@2@@std @@@2@@2@U?$less@V?$basic_string@DU?$char _traits@D@std@@V?$allocator@D@2@@std@@@2 @V?$allocator@U?$pair@$$CBV?$basic_strin g@DU?$char_traits@D@std@@V?$allocator@D@ 2@@std@@V?$vector@V?$map@H_NU?$less@H@st d@@V?$allocator@U?$pair@$$CBH_N@std@@@2@ @std@@V?$allocator@V?$map@H_NU?$less@H@s td@@V?$allocator@U?$pair@$$CBH_N@std@@@2 @@std@@@2@@2@@std@@@2@@std@@@Z)
                          Ответить
                          • довольно очвидно что у тебя ошибка в шаблоне на строке 363
                            Ответить
                  • Больше ада!

                    В классическом «Паскале» модулей не было, они появились в «Турбо Паскале» (их позаимствовали из «Модулы», только переименовали из module в unit).

                    В «Delphi» стало два интерфейса: один из них — это декларация модуля (унаследованного из «Турбо Паскаля»), второй из них — это pure abstract class с костылём для COM-объектов.

                    unit Foo;
                    
                    interface (* этот интерфейс - декларация модуля, как в Турбо Паскале *)
                    
                    type
                    (* этот интерфейс - это pure abstract class *)
                    IMyInterface = interface  
                      Function MyFunc : Integer;  
                      Function MySecondFunc : Integer;  
                    end; 
                    
                    (* а этот интерфейс - интерфейс к COM-объекту *)
                    IUnknown = interface [’{00000000-0000-0000-C000-000000000046}’]  
                      function QueryInterface(const iid : tguid;out obj) : longint;  
                      function _AddRef : longint;  
                      function _Release : longint;  
                    end; 
                    
                    implementation
                    
                    end.
                    Ответить
                      • Я вот кресты не люблю за то, что они по 100500 раз переиспользуют каждое ключевое слово и каждый символ. А эту гадость ещё и в другие языки тащат, как будто слов мало.
                        Ответить
                        • Ага. Лямбды — просто-таки квинтэссенция крестового подхода к спецсимволам. В лямбдах из C++20 будут использоваться все виды скобок — []<>(){}.
                          Ответить
                    • Какой ёбаный пиздец. Никогда раньше не приглядывался.
                      Ответить
      • зы: в защиту жоба скрипта могу сказать что с new и без new эффект будет разный.

        function Foo(name) {
           this.name = name;
        }
        
        Foo("petookh"); //упадет, ибо нет this
        new Foo("assd"); //сработает ибо this.


        на самом деле new просто неявно добавляет три строчки
        function Foo() {
            let this = {};
            this.__proto__ = Foo.prototype;
            return this;
        }


        но к классам это не относица, их всегда можно только через new
        Ответить
        • Круче всех с new поступил C#.

          Там есть value types (структуры и всякие числа) которые создаютсы на стеке.
          Но им все равно нужен new чтобы вызвать конструктор.
          А если без new то они просто не вызовут конструктор.

          То-есть new не влияет на размешение объекта, а просто вызывает или не вызывает конструктор
          Ответить
    • Это же ненулевой инстанс объекта у тебя
      на хуя вообще тут new?
      Ответить
        • Т. е. в JS при неявном касте в булев кокококонтекст (в частности, при использовании в качестве условия оператора if) проверяется нетривиальность указателя на объект, а в Java извлекается значение объекта (какое-то дефолтное поле или свойство)?
          Ответить
          • Это костыль для конкретных обёрток над примитивами насколько я помню. Integer -> int и т.п.
            Ответить
          • нет, в джаве ничего не извлекается, нам нет перегрузки операторов

            там просто зашит special case о том что Boolean() это bool
            Ответить
            • Значит, всё-таки хаки для некоторых классов, прибитых гвоздями к примитивным типам.

              А я уже думал, что там есть магический метод, вроде как в жопоскрипте автоматически вызывается toString(), когда нужно что-то куда-нибудь вывести.
              Ответить
                • Погуглил.
                  Integer iOb = 7;
                  Double dOb = 7.0;
                  Character cOb = 'a';
                  Boolean bOb = true;
                  кокококомпилируются, как будто там было так:
                  Integer iOb = new Integer(7);
                  Double dOb = new Double(7.0);
                  Character cOb = new Character('a');
                  Boolean bOb = new Boolean(true);

                  И наоборот:
                  int i = iOb;
                  double d = dOb;
                  char c = cOb;
                  boolean b = bOb;
                  кокококомпилируется, как будто там было
                  int i = iOb.intValue();
                  double d = dOb.doubleValue();
                  char c = cOb.charValue();
                  boolean b = bOb.booleanValue();


                  Заявили, что построили ЯП, в кокококотором всё является объектом, а потом подпёрли синтаксическими кокококостылями.
                  Ответить
                  • Когда это джава говорила что все является объектом?
                    Там есть примитивы довольно офийиально.


                    А вот врапперы это говнокостыль потому что шаблонов нет, и нельзя хоранить притив там де есть объект
                    Ответить
              • это
                valueOf

                кокогда
                (new Boolean(false)).valueOf() ? true : false

                а кокогда
                Boolean(false) ? true : false


                [style]code { display: inline }[/style]
                Ответить
                • "use strict";
                  
                  
                  class Foo {
                  
                          valueOf() {
                                  return 32;
                          }
                  }
                  
                  console.log(new Foo() == 32);
                  // true
                  но!
                  console.log(new Foo() === 32);
                  // false


                  какой бугор
                  Ответить
                • Пиздец блять, даже булеан сделали обхектом.

                  Какой позор (((
                  Ответить

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8