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

    +4

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

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

    Запостил: UnQu1et, 28 Июня 2019

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

    • вернятно он где-то слышал что "ифы можно замегнить тренарником"
      Ответить
      • Не вероятно, а так и есть. Он вообще от ифов везде отказался и сказал, что пишет в функциональном стиле
        Ответить
        • > this.checkArrayErrors()
          > пишет в функциональном стиле
          Ответить
        • Этот говнокодик конечно не имеет отнощения к функицональщине
          Ответить
        • А от скобочек в пользу запятых он не отказался?
          Ответить
    • Разве за такую хуйню увольняют? Максимум – высмеять да отправить переписывать
      Ответить
      • За единожды нет. Но такого рода код и похуже у него встречался в каждом реквесте и мы устали его тыкать, тем более он не признавал, что это плохой код
        Ответить
        • почому не
          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);
        Ответить
        • А у «Питона» есть пакет «future». Там тоже есть всё.
          Ответить
          • у питона есть все в itertools
            Ответить
            • Я немножко ошибся в названии пакета:
              from __future__ import braces


              http://ideone.com/Fm05dV

              Да, в «itertools» ничего из этого нет. Именно поэтому я за «itertools».
              Ответить
        • Какой npm )))

          А главное — какое информативное название )))
          Ответить
          • uwu
            Ответить
            • Теперь всё ясно, «npm» писали анимешники! Они же всё огромным делают: глаза, сиськи, папку node_modules…
              Ответить
              • Вот же сранные анимешники. Болеют гигантоманией. Гитлер тоже был анимешником.
                Ответить
                • У сосиалитов такая традиция есть, вместо обеда гардиться какой-нибудь самой в мире штукой.
                  Ответить
          • дока, опять же, м0щная
            https://www.npmjs.com/package/wu
            Ответить
            • Бтв, самая охуенная дока что существует - это с нормальной навигацией и с примерами кода, например php.net. Дока питона меня просто бесит.
              Ответить
              • https://docs.python.org/3/library/pathlib.html#basic-use

                щто не так с путхоном?!
                Ответить
    • > JavaScript
      > испытательный срок
      Такое бывает?
      Ответить
      • Предпочитение соискателям, которые умеют самостоятельно завязать шнурки
        Ответить
        • Предпочтение соискателям, пишущим на фреймворке выпущенном не позднее мая 2019-го
          Ответить
      • В любой конторе есть испытательный срок 3 месяца. Как видишь, в данном случае он себя оправдал.
        Ответить
    • http://aleshastupin.com/wp-content/uploads/0808.jpg
      Ответить
      • Хватит проецировать голограмму бомжа!
        Ответить
        • http://aleshastupin.com/wp-content/uploads/00767.jpg
          Ответить
          • Хватит проецировать голограмму бомжа!
            Ответить
            • http://aleshastupin.com/wp-content/uploads/0751.jpg
              Ответить
            • Разумный петух, ты ведь разумный.
              Ответить
              • Но не настолько, чтобы понять, с какой целью Сёма пиарит Путина.
                Ответить
                • http://aleshastupin.com/wp-content/uploads/0682.jpg
                  Ответить
                  • Что такое "16OR PONOC HEVNY"?
                    Ответить
                    • Возможно, там орфографические ошибки.

                      «Ponos» («понос») в переводе с сербско-хорватского и со словенского означает «гордость»:
                      https://en.wiktionary.org/wiki/ponos

                      «Hněvný» в переводе с чешского означает «гневный»:
                      https://en.wiktionary.org/wiki/hněvný
                      Тут даже и переводить не надо, достаточно транслитерировать.

                      А 16OR мне почему-то сразу напоминает о попытке SQL-инъекции.

                      Почему столько языков в таком коротком тексте?
                      Ответить
                      • https://1155079409.rsc.cdn77.org/i/lg/files/product/e4/24ce4e85ecdd8beabb0a96014ea6cb93.jpg
                        Ответить
                    • Там написано Igor. Igor tonet
                      Ответить
    • > 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.

          Обезьяны, что с них взять?
          Ответить
        • зы: в защиту жоба скрипта могу сказать что с 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 не влияет на размешение объекта, а просто вызывает или не вызывает конструктор
            Ответить
          • > упадет, ибо нет this
            А я не пишу 'use strict' и теку:
            function f() {
                this.x = 42;
            }
            
            f();
            console.log(x);
            Ответить
      • Это же ненулевой инстанс объекта у тебя
        на хуя вообще тут new?
        Ответить
        • в жабе догадались анбокснуть его
          https://ideone.com/jvkPMy
          Ответить
          • Т. е. в JS при неявном касте в булев кокококонтекст (в частности, при использовании в качестве условия оператора if) проверяется нетривиальность указателя на объект, а в Java извлекается значение объекта (какое-то дефолтное поле или свойство)?
            Ответить
            • Это костыль для конкретных обёрток над примитивами насколько я помню. Integer -> int и т.п.
              Ответить
            • нет, в джаве ничего не извлекается, нам нет перегрузки операторов

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

                А я уже думал, что там есть магический метод, вроде как в жопоскрипте автоматически вызывается toString(), когда нужно что-то куда-нибудь вывести.
                Ответить
                • Autoboxing погугли.
                  Ответить
                  • Погуглил.
                    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


                    какой бугор
                    Ответить
                    • <?php
                      
                      class Foo {
                          public function __toString() {
                              return '32';
                          }
                      
                      }
                      
                      function printbool($x) {
                          static $bv = array(false => 'false', true => 'true');
                          return $bv[$x];
                      }
                      
                      echo printbool(new Foo() == '32') . PHP_EOL; // выведет true
                      
                      echo printbool(new Foo() === '32') . PHP_EOL; // выведет false

                      К сожалению, в «PHP» нет магического метода __toInteger, хотя __toString есть. Какая Бугульма...
                      Ответить
                    • === не вызывает valueOf же
                      Ответить

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