1. C# / Говнокод #2104

    +136.7

    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
    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
    void parseDate(String str, ref int day, ref int month, ref int year)
            {
                String[] strings = str.Split('/');
                day = Int32.Parse(strings[0]);
                month = Int32.Parse(strings[1]);
                year = Int32.Parse(strings[2]);
            }
    
    bool validateDate(String s)
            {
                //let the data be null
                if (s == null || s == "")
                    return true;
                try
                {
                    String[] strings = s.Split('/');
                    if (strings.Length != 3)
                        return false;
    
                    String day = strings[0];
                    if (Int32.Parse(day) > 31)
                    {
                        return false;
                    }
                    String month = strings[1];
                    if (Int32.Parse(month) > 12)
                    {
                        return false;
                    }
                    String year = strings[2];
                    if (year.Length != 4)
                    {
                        return false;
                    }
                }
                catch (SystemException)
                {
                    return false;
                }
                return true;
            }
    
    int compareDates(String s1, String s2)
            {
                if (s1 == "" && s2 != "")
                    return -1;
                if (s1 == s2)
                    return 0;
                if (s1 != "" && s2 == "")
                    return 1;
    
                int day1 = 0, month1 = 0, year1 = 0, day2 = 0, month2 = 0, year2 = 0;
                parseDate(s1, ref day1, ref month1, ref year1);
                parseDate(s2, ref day2, ref month2, ref year2);
                if (year1 > year2)
                    return -1;
                if (year1 < year2)
                    return 1;
    
                if (month1 > month2)
                    return -1;
                if (month2 < month1)
                    return 1;
    
                if (day1 > day2)
                    return -1;
                if (day2 > day1)
                    return 1;
    
                return 0;
            }

    no comments

    Запостил: alex, 06 Ноября 2009

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

    • DateTime.Parse(...).Day;
      DateTime.Parse(...).Month;
      DateTime.Parse(...).Year;
      -----------------------------------------------
      DateTime.TryParse(...);
      DateTime.TryParseExact(...);
      -----------------------------------------------
      третью оставлю без комментария.
      Учите матчасть.

      Опять Parse, а не TryParse.
      Возврат из Catch.

      Это была лаба на реализацию типа DateTime? зачем это? если лаба то почему сравнение это не перегруженные операторы?
      Ответить
    • Лежат на столе две книги - тонкая и толстая.
      На тонкой написано "Логика", на толстой - "Женская Говнокодерская логика. том 1".

      Вот объясните, зачем здесь SystemException?
      Если принципиально не использовать TryParse, то надо перехватывать FormatException и OverflowException. Просто Exception - ещё куда ни шло. Но почему SystemException?
      Ответить
    • Это взято из одной реализации тестового задания на должность c# программиста. Я, как проверяющий, не берусь понимать зачем и что в этом коде. Просто ЭТО точно говнокод.
      Ответить
    • ...а если в "validateDate" "s" - пустая строка или нулл (проверку на это лучше делать "string.IsNullOrEmpty"), то типа дата валидная, - "true" возвращает...
      ваще не вижу логики
      Ответить

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