1. Pascal / Говнокод #54

    −5.8

    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
    18. 18
    19. 19
    function IntToMonth(NumberMonth: Integer): string;
    begin
      сase NumberMonth of
        1: Result := 'Январь';
        2: Result := 'Февраль';
        3: Result := 'Март';
        4: Result := 'Апрель';
        5: Result := 'Май';
        6: Result := 'Июнь';
        7: Result := 'Июль';
        8: Result := 'Август';
        9: Result := 'Сентябрь';
        10: Result := 'Октябрь';
        11: Result := 'Ноябрь';
        12: Result := 'Декабрь';
      else
        Result := 'Август';
      end;
    end;

    Думаю, по названию функции все понятно :)

    Запостил: guest, 04 Декабря 2008

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

    • И в чем же юмор? Автор совершенно верно делает, что возвращает результат даже в случае левых входных данных.
      Ответить
    • Говногость 2:
      хмммм... задумался. Ну да, я бы так же сделал... только возвращал бы не "август", а например "хз какой месяц"
      Ответить
    • Для этого есть замечательный месяц - "июбрь"
      Ответить
    • страйко:
      а я бы кидал эксепшн
      Ответить
    • stalcer:
      эксепшен это прально. но если проще то я бы возвращал пустую строку. А самое главное заменил бы case константным массивом.
      Ответить
    • pozitronik:
      [quote=Говногость]Для этого есть замечательный месяц - "июбрь"[/quote]
      Ещё лучше - нулябрь
      Ответить
    • q:
      хотя это ни к чему не привязанный код, мало-ли для чего он делался, может там какой-то период выделяется и граница его на август приходится?
      Ответить
    • Veton:
      У русскоязычных индуссов в августе обед
      Ответить
    • Master:
      по сути надо сделать так, чтобы набирались числа от 1 до 12 и никаких проблем =)
      Ответить
    • const AMonths: array[1..12] of String = '';
      return AMonths[Index];
      В случае выхождения за границы - эксепшн.
      Ответить
    • tButton:
      а я тоже август люблю =)
      правда мне второй год подряд не даю т августе отпуск =(
      Ответить
    • Александр:
      И никто не заметил, что код не может скомпилироваться и приведён здесь так - для смеха?
      Ответить
    • asail:
      С чего-бы ему не компилироваться?

      Насчет августа - надо вычислять по MOD.
      сase NumberMonth mod 12 of ...

      Ну и в case проверять от 0 до 11...
      Ответить
    • mihail:
      там в case первая буква - русская. соответственно, при копипастинге код не компилируется
      Ответить
    • облачко:
      вот тогда точно говонокод! )
      Ответить
    • seleznyov:
      case Year of
      2000: Result := '2000';
      2001: Result := '2001';
      ...
      2002: Result := '2002';
      else
      Result := '1999';
      end;
      Ответить
    • как всегда на настройку локали пользователя нам насрать?
      function IntToMonth(NumberMonth: Integer): string;
      begin
       try
        Result := LongMonthNames[NumberMonth];
       except
        on EArrayError do Result := '';
       end;
      end;
      Ответить
    • Lolwho:
      Даже если в случае ошибки надо возвращать Август, нахрена его было писать 2 раза, если можно просто убрать условие на 8? :D
      Ответить
      • для читабельности
        Ответить
        • Не только. Ещё и для модифицируемости. Вдруг в следующей версии придётся вместо августа возвращать что-то другое?
          Ответить
        • сомнительная читабельност
          Ответить
    • Нормально написано. Может это для серверного приложения. А там юзеры частенько глупые. не поняли бы ни июбрь ни пустую строку а так хоть чтото. Вообще все зависит от того где использовать функцию
      Ответить
    • показать все, что скрытоvanished
      Ответить

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