Си диез / Говнокод #7518 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
private int GetMaxDayValue(int month, int year)
    {
        int value = 0;
        switch (month)
        {
            case 1:
                value = 31;
                break;
            case 2:
                switch (year)
                {
                    case 2008:
                        value = 29;
                        break;
                    case 2009:
                        value = 28;
                        break;
                    case 2010:
                        value = 28;
                        break;
                    case 2011:
                        value = 28;
                        break;
                    case 2012:
                        value = 29;
                        break;
                    case 2013:
                        value = 28;
                        break;
                    case 2014:
                        value = 28;
                        break;
                    case 2015:
                        value = 28;
                        break;
                    case 2016:
                        value = 29;
                        break;
                }

                break;
            case 3:
                value = 31;
                break;
            case 4:
                value = 30;
                break;
            case 5:
                value = 31;
                break;
            case 6:
                value = 30;
                break;
            case 7:
                value = 31;
                break;
            case 8:
                value = 31;
                break;
            case 9:
                value = 30;
                break;
            case 10:
                value = 31;
                break;
            case 11:
                value = 30;
                break;
            case 12:
                value = 31;
                break;
        }
        return value;
    }

Кусок кода из активно используемого корпоративного приложения :)

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

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

  • На смену проблеме 2000 пришла проблема февраля 2017!
    Ответить
    • Программист себе работу на 2017 заготовил, очень предприимчивый.
      Ответить
  • И кстати. Лучше сделать так:
    switch (year)
                    {
                        case 2008:
                            value = 29;
                            break;
                        case 2012:
                            value = 29;
                            break;
                        case 2016:
                            value = 29;
                            break;
                        case 2020:
                            value = 29;
                            break;
                        case 2024:
                            value = 29;
                            break;
                        default:
                            value = 28;
                            break;
                    }


    Конечно если человек принципиально не использует %...
    Ответить
  • Каждый говнокодер должен изобрести свой велосипед с квадратными колесами, и потом всю жизнь допиливать их напильником ...
    int daysInFeb = DateTime.DaysInMonth(2011, 2);
    Ответить
    • Такими решениями Вы усугубляете мировой кризис, оставляя быдлокодеров без работы.
      Ответить
  • удобно, расширяемо и без работы не останешься.

    а вдруг проведут очередную нанореформу и календарь изменится?
    Ответить
  • DateTime.DaysInMonth(2011, 2); Вполне может быть реализован так же)
    Ответить
    • public static int DaysInMonth(int year, int month)
      {
      if ((month < 1) || (month > 12))
      {
      throw new ArgumentOutOfRangeException("month", Environment.GetResourceString("ArgumentO utOfRange_Month"));
      }
      int[] numArray = IsLeapYear(year) ? DaysToMonth366 : DaysToMonth365;
      return (numArray[month] - numArray[month - 1]);
      }

      где

      DaysToMonth365 = new int[] { 0, 0x1f, 0x3b, 90, 120, 0x97, 0xb5, 0xd4, 0xf3, 0x111, 0x130, 0x14e, 0x16d };
      DaysToMonth366 = new int[] { 0, 0x1f, 60, 0x5b, 0x79, 0x98, 0xb6, 0xd5, 0xf4, 0x112, 0x131, 0x14f, 0x16e };
      Ответить
          • мда...
            я тут сырцы жабы как-то постил. а выходит у МS все гораздо хуже.
            просто этого никому кроме любознательных не видно..
            Ответить
            • Согласен код говно, но интересный.
              Не кал начинающего говнокодера, а качественное профессиональное говно.
              Ответить
            • Так я и думал. Hex/dec на совести рефлектора. Кратные 10 он изволил дать в десятичной записи, остальные представил в шестнадцатеричной. То же относительно лишних скобочек.

              Ещё претензии есть?
              Ответить
              • В данном контексте можно было и без вычисления разницы обойтись.
                Ответить
                • Зачем, если уже есть DaysToMonth365/DaysToMonth366, необходимый для других целей (например, вычисления разницы дат)?
                  Ответить
                    • «Данный контекст» — класс для работы с датой/временем, DateTime.
                      Ответить
                        • Может кто-нить объяснит зачем хранить в массиве месяцев 13! элементов
                          Ответить
                          • Вот зачем:
                            return (numArray[month] - numArray[month - 1]);

                            Для month=12 будет numArray[12]-numArray[11], а для month=1 будет numArray[1]-numArray[0]. Это издержки выбранной модели.
                            Ответить
  • Оптимизация говнокода
    private int GetMaxDayValue(int month, int year)
    {
    switch (month)
    {
    case 1:
    return 31;
    case 2:
    switch (year)
    {
    case 2008:
    return 29;
    case 2009:
    return 28;
    case 2010:
    return 28;
    case 2011:
    return 28;
    case 2012:
    return 29;
    case 2013:
    return 28;
    case 2014:
    return 28;
    case 2015:
    return 28;
    case 2016:
    return 29;
    }
    case 3:
    return 31;
    case 4:
    return 30;
    case 5:
    return 31;
    case 6:
    return 30;
    case 7:
    return 31;
    case 8:
    return 31;
    case 9:
    return 30;
    case 10:
    return 31;
    case 11:
    return 30;
    case 12:
    return 31;
    }
    }
    Ответить

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

Из-за тебя ушел bormand, guest!

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


    8