1. Ruby / Говнокод #26267

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    - @a_parts.each do |part|
                .part.uk-card.uk-card-default.uk-card-hover data-id=part.id
                  - p_image = "/images/no_photo.png"
                  - if part.image
                    - images = part.image.split(',')
                    - p_image = (images[0] == nil) ? "/images/no_photo.png" : "/images/compressed_#{images[0]}"
                    - p_img = (images[0] == nil) ? "/images/no_photo.png" : "/images/#{images[0]}"
                    - p_image = p_img unless File.exists?("#{Rails.root.to_s}/public/images/compressed_#{images[0]}")
                    - if images[0].split('http').length > 1
                      - p_image = images[0]

    Все внимание к 6,7 и 9 строке
    6 и 7 строка позитивное условие тернарного оператора не может случиться
    9 строка - хотя если вдруг случится, то вылетит тут с ошибкой. так как nil нельзя ни split'нуть, ни дальше посчитать длину

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

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

    • показать все, что скрытоvanished
      Ответить
    • Переведи на "PHP".
      Ответить
    • Ну во-первых вместо "== nil" лучше писать .nil?, во-вторых да: код не корректен. Если уж у нас images[0], то он никогда не равен nil, это же не обжс, где можно слать сообщения нилу

      В целом код малоприятен. Я бы сразу проверил images на empty?, и сделал две веточки
      Ответить
      • В NSArray nil быть не может, как и weak-ссылок. Может быть NSNull ))
        Ответить
        • а) тогда будет исключение, да?
          Ответить
          • А я уже не помню. Харам какой-то будет
            Ответить
            • я кажетися знаю, почему та мне может быть нула
              Потому что NSArray завершается нулом, как сишная строка. Угадал?
              Ответить
              • https://stackoverflow.com/questions/1309535/why-does-nsarray-arraywithobjects-require-a-terminating-nil

                Всякое такое
                Ответить

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