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

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
let checks: boolean[] = [];

      languages.value.map((language) => {
        checks.push(name.value.hasOwnProperty(language.locale) && !!name.value[language.locale]);
        checks.push(description.value.hasOwnProperty(language.locale) && !!description.value[language.locale]);
      });

      return !checks.includes(false);

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

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

  • — Никифор, принеси-ка мне, голубчик, рояль из залы — на нём моя рюмка коньяка стоит...
    Ответить
    • Генерили-генерили массив, а потом взяли и выбросили...

      З.Ы. Да ещё и map() юзают ради сайд-эффекта, как в басне про мартышку и очки.
      Ответить
      • Помнится every для сайд-эффекта использовалось, чтобы на некорректной итерации можно было break-нуться. Возможно map вместо forEach тут потому, что раньше был код который кроме сайд-эффектов еще возвращает вспомогательный массив (например список кодов языков для передачи на какое-нибудь API). Возможно влияние "фуфу процедурщина зло" и тупого дроча на фишки функционального программирования, сочащегося из каждой второй статьи на Медиуме.
        Ответить
  • многие годы процедурщины так просто и не пропьешь
    Ответить
    • Процедурщик написал бы цикл, который обновляет один единственный бул (или даже сразу выходит)...

      В общем-то оно и читалось бы легче, чем эти однострочники с кучей операторов.
      Ответить
    • Вот код настоящей процедурщицы:
      function hasAllLocales(element) : bool {
          for (let language in languages.value) {
              if (!element.hasOwnProperty(language.locale))
                  return false;
              if (!element[language.locale])
                  return false;
          }
          return true;
      }
      
      return hasAllLocales(name.value) && hasAllLocales(description.value);
      С процедурой, внезапно. Говно? Плохо читается? Сложно поддерживать?
      Ответить
      • лучше чем оригинальный код, но хуже чем однострочка с some или every
        Ответить
      • > хуже чем однострочка
        [name.value, description.value].every(element => 
            languages.value.every(language =>
                element.hasOwnProperty(language.locale) &&
                element[language.locale]
            )
        );
        Как-то так? Хрен знает, мне процедурная версия больше нравится.
        Ответить
        • я быб в функцию вынесб
          const languages = {
              value: ['en_US', 'os_OS', 'de_DE']
          };
          
          interface Huita {
              value: {
                  [key: string]: boolean
              }
          }
          
          const myName: Huita = {
              value: {
                  ru_RU: true,
                  en_US: false
              }
          }
          
          const description: Huita = {
              value: {
                  ru_RU: true,
                  en_US: false
              }
          }
          
          function isHuita(language: string, ...huitas: Huita[]): boolean {
              return huitas.some(huita => huita.value.hasOwnProperty(language) && !!huita.value[language]);
          }
          
          // Вот код
          languages.value.some(language => isHuita(language, myName, description));
          Ответить
          • Один раз не huitas, но походу ты полярность результата попутал. Или я.
            Ответить
            • да, я в бизнес-смысле этого не очень
              Ответить
              • А почему внешний цикл по языкам, а не по элементам?
                Ответить
                • а почему ты спрашиваешь? Ты надеюсь не оптимизировать код собрался?
                  Ответить
                  • Хрен знает, так то оба варианта имеют право на жизнь: "переведён ли элемент на все языки?" и "все ли элементы переведены на этот язык?"
                    Ответить
                    • если на то пошло, то лучше взять Map: там не нужно hasOwnProperty будет
                      Правда я ХЗ не медленее ли оно объекта
                      Ответить
      • плохо читается, потому что отрицания в условиях

        в остальном ок.
        Ответить
      • Ничего тяжелее стакана и хуя (золотого) в руках не держала, а ты мне - лопату? И не стыдно, гражданин начальник?
        Ответить

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

Переведи на "PHP", guest!

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


    8