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

    −3

    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
    export namespace Ext {
        export function isEmpty(obj: any): boolean {
            return (typeof obj === "undefined" || obj === null || obj === "");
        }
        export function setReadonly(flag: boolean, ...args: any[]): void {
            args.length > 0 ? (flag ? args.forEach(arg => !isEmpty(arg) ? arg.setDisabled(false) : null) :
                args.forEach(arg => !isEmpty(arg) ? arg.setDisabled(true) : null)) : null;
        }
        export function filterInt(value) {
            if (isStrToInt(value))
                return Number(value);
            return NaN;
        }
        export function isStrToInt(value: string): boolean {
            return /^(-|\+)?(\d+|Infinity)$/.test(value) ? true : false;
        }
    }

    Типичный хелпер на ts проекте

    Запостил: m_sandman, 23 Декабря 2019

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

    • export function filterInt(value) {
              if (isStrToInt(value))
                  return Number(value);
              return NaN;
          }
          export function isStrToInt(value: string): boolean {
              return /^(-|\+)?(\d+|Infinity)$/.test(value) ? true : false;
          }

      Когда это не аналогично вызову конструктора Number?
      Ответить
      • Когда дробного питуха попытаются пропихнуть. Конструктор намбер вернет число, а это говно - NaN.
        3.14 - это не число!
        Ответить
        • Охуенно
          Ответить
        • Я придумал:
          function filterInt(value) {
              return Number((value+'').replace('.','~'));
          }


          Кто сможет ещё короче?
          Ответить
          • 1e-1
            Ответить
            • Сначала хотел сказать: «Хакер!»

              Потом понял, что (1e-1).toString() == "0.1", поэтому мой код сработает:
              https://ideone.com/h304K1

              Вот с 1e-10 уже будет жопа:
              https://ideone.com/1tTOGc
              Ответить
      • Если представить, что Винни-пух и Пятачок джуны-разработчики, то этот код отсылает нас к эпизоду из одноименного мультика, когда медведь застрял в кроличьей норе. Судя по важности кролика, который воздев к небу перст изрек "Нет, это потому, что кто-то слишком много ест!" становится ясно, что это сеньор...
        Ответить
    • анальные костыли. Выкинуть на помойку, и взять язык со стат типизацией

      Ну либо не выебываться, и писать без нее
      Ответить
    • > StrToInt
      Какой Pascal)))
      Ответить
    • use feature qw(say);
      
      sub isStrToInt {
          return s/.*/shift/ee && /^[+-]?\d+\z/ || /^Infinity\z/;
      }
      
      say isStrToInt('1234') ? 1 : 0;     # 1
      say isStrToInt('1234.1') ? 1 : 0;   # 0
      say isStrToInt('+1234') ? 1 : 0;    # 1
      say isStrToInt('1e-10') ? 1 : 0;    # 0
      say isStrToInt('Infinity') ? 1 : 0; # 1
      say isStrToInt('') ? 1 : 0;         # 0

      Кручу-верчу, запутать хочу!
      Ответить
      • * чтобы использовать say лучше указать в use версию перла
        * return, кажется, опционален
        Ответить
      • PS: я рад, что ты отказался от неконсистентного мусора типа python, и сделал выбор в пользу нормальных современных ЯП
        Ответить
        • Приведи реальный пример нормального современного ЯП. Я серьёзно.
          Ответить
          • Все языки -- дерьмо. Некоторые дерьмо чуть меньшее.

            Скажем, джава дерьмовее сишарпа
            Пхп дерьмовее любого языка
            Питон, пожалуй, дерьмовее руби, а может и перла
            Ответить
            • Сом керосинки толще.
              Толще лука морской винт.
              Книга толще тетради,
              а тетради толще одной тетради.
              Ответить
            • Чем перл лучше пхп?
              Ответить
              • В Perl нет дурацких преобразований типов
                В Perl не смешали в кучу массив и хеш
                В Perl принято использовать DBI::DBD, а в php мы постоянно слышим про sql инъекции
                В Perl стандартная библиотека не засрана ненужностями
                В Perl многие вещи были сделаны изначально правильно (были неймспейсы, был пакетный менеджер), потому говнокода на нем меньше
                В Perl есть оператор Goatse, а в PHP нету
                Ответить
              • Тем что на нём не каждый может писать.
                Ответить
                • Тогда «Malbolge» ещё лучше.
                  Ответить
                  • Malbolge вообще лучший язык в мире, на нём просто не существует говнокода.
                    Ответить
                    • Ты скажи, питушок, чё ты хошь, чё ты хошь?
                      Может дам, питушок, чё те надо!
                      Ответить
    • > Infinity и NaN
      Охуенный int, хочу везде такой.
      Ответить
      • жопа скрипт же, там и целый петух плавает
        Ответить

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