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

    −109

    1. 1
    monthes = ['Нулября', 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря']

    Вот, оказывается, как лечится, что индексы в массиве начинаются с нуля, а номера месяца с 1

    Запостил: solenko, 24 Января 2012

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

    • и в руби тоже
      Ответить
    • ждем говнокод про даты на руби
      Ответить
    • Что-то нулябри стали часто проскакивать, буквально несколько дней назад было подобное
      Ответить
      • так январь же. у стартапов вспыли баги с 0 индексом
        Ответить
    • Говорят, в четвёртом питоне массивы будут нумероваться с единицы, как в паскале
      Ответить
      • ' Important!
        Option Base 1

        Турбобейсик форева.
        Ответить
      • Эту идею отклонили, не?
        Ответить
      • Но ведь в Паскале массивы можно нумеровать с любого значения, хоть с отрицательного.

        Это в старом Фортране и в Бейсике (при наличии директивы OPTION BASE) нумерация с единицы.
        Ответить
    • а чем решение плохое?
      Ответить
      • Ну, как бы если в программе есть ошибка, пользователь увидит таинственное 24 нулября. Если уж пишешь велосипед для работы с датами, сделай ты два селектора listMonthNames и getMonthByNumber. В последнем нужно добавить валидацию переданного номера месяца, чтобы выявлять ошибки как можно раньше и производить приведение номера к индексу массива.
        Ответить
        • в этом и напряг выходит: чтобы получить описание месяца по порядковому номеру необходимо ВСЕГДА дергать через хелпер. из контекста не ясно, как используется массив. может взятие по индексу происходит в тот момент когда все проверки уже пройдены
          Ответить
          • Даже если массив является приватным в классе, код как минимум забавен. Действительно, проще добавить таинственный месяц, чем отнимать от номера единичку при обращении.
            Ответить
            • вы в java никогда с месяцем не ошибались? =)
              Я никак не могу понять: почему месяцы с нуля, а числа месяца - с еденицы
              Ответить
              • java и даты - это вообще грустная история.
                Ответить
              • > Я никак не могу понять: почему месяцы с нуля, а числа месяца - с еденицы
                Значит ты сишную структуру tm не видел... Там, в дополнение к этому, еще и годы с 1900.
                Ответить
        • кстати, про 24 нулября. Уж лучше увидеть 24 нулября - по крайней мере пользователь сразу поймет, что программа глючит, чем он увидит 24 января - это создаст иллюзию, что все работает отлично.
          Ответить
          • Не заметят где-нибудь на платёжке или важном договоре - так и уйдёт на подпись.
            Ответить
            • от того что подпишут с январем лучше тоже никому не будет =)
              Ответить
    • Был уже нублярь.
      Ответить
      • * DONE Проебать нулябрь                :important:
        Ответить
        • org-mode detected
          Ответить
        • А мне недавно разрешили сходить в отпуск в нулябре.
          Ответить
        • Использовал орг-мод, но на мобильном с редактированием тяжело. Таскать туда-сюда из напоминаний сотового - не самое лучшее использование времени.

          Не подскажете - появились работающие приложения для работы с орг-модом на смартфонах?
          Ответить
          • > работы с орг-модом на смартфонах?
            Месье знает толк в извращениях. Я вообще редко использую телефон, в основном для звонков и реже для отправки смс, ибо набирать текст на маленьком куске пластика - не самое приятное занятие.
            Ответить
    • "monthEs"
      Ответить
    • a = 5 # Порядковый номер месяца
      monthes = [ 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря']
      print mouthes[a+1]

      Не?
      Ответить
      • Это же говнокод! Лучше массивы с 1 начинать чтобы было было удобнее говнокодячить.
        Ответить
        • Задачи разные бывают. Некоторые требуют, чтобы массив начинался с нуля. Выход везде один - декремент\инкремент индекса. Благо они занимают всего один байт памяти. Алсо, в x64 чистые команды INC REG, DEC REG отсутствуют вообще.
          Ответить
          • всмысле INC один байт занимает? это вместе с операндом?
            Ответить
            • Вай нот?
              Ответить
            • Общая формула такова: Базовый опкод + номер регистра
              Базовые опкоды:
              INC - 40h
              DEC - 48h
              PUSH - 50h
              POP - 58
              Номера регистров:
              EAX - 0
              ECX - 1
              EDX - 2
              EBX - 3
              ESP - 4
              EBP - 5
              ESI - 6
              EDI - 7
              Ответить
            • Сама инструкция занимает один байт.
              Ответить
              • при царе горохе ALU выполнял сложение с фиксированными регистрами
                Ответить
          • В каком x64, в ia86-64 или несовместимом? А куда пропал INC из ia86-64?
            Ответить
      • > monthes
        > mouthes
        И ведь скомпилится и будет даже работать... Динамическая типизация во всей красе. А также нежелание некоторых работать в IDE вместо Блокнота/vim/emacs и прочей хуерги.
        Ненависть!
        Ответить
      • class Monthes < ::Array
        def [] index
        super index + 1
        end
        end
        Ответить
      • 5ый месяц это апрель?
        или
        1.9.3-p362 :001 > a = 5 # Порядковый номер месяца
         => 5 
        1.9.3-p362 :002 > monthes = [ 'Января', 'Февраля', 'Марта', 'Апреля', 'Мая', 'Июня', 'Июля', 'Августа', 'Сентября', 'Октября', 'Ноября', 'Декабря']
         => ["Января", "Февраля", "Марта", "Апреля", "Мая", "Июня", "Июля", "Августа", "Сентября", "Октября", "Ноября", "Декабря"] 
        1.9.3-p362 :004 > print monthes[a+1]
        Июля => nil

        a-1?
        Ответить
    • Предлагаю ввести дополнительный месяц оверфловрь.
      Ответить
      • Жаль только, что "говнарь" уже заняли.
        Ответить
    • ко ко ко
      Петя, ты?
      Ответить
      • Ходит по двору петух — важничает, а другой петух горошек клюёт.
        Первый петух подбегает и говорит:
        — Ко-ко-ко, отдай горох!
        — Не дам, — говорит второй.
        — Тогда заклюю! — нападает первый.
        Вот распустили они перья и начали драку.
        Пока петухи дрались, куры съели всё зерно, а потом и горошек.
        Ответить
        • Ходит по двору петух — важничает, а другой петух сгущёнку стережет.
          Первый петух подбегает и говорит:
          — Ко-ко-ко, отдай сгущёнку!
          — Не дам, — говорит второй.
          — Тогда заклюю! — нападает первый.
          Вот распустили они перья и начали драку.
          Пока петухи дрались, куры съели всю сгущёнку.
          Ответить
    • http://1chan.ru/news/res/869016/#869101
      Ответить
    • Нулябля.
      Ответить

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