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

    +139

    1. 1
    Assert.That(users.Count(), Is.EqualTo(Enumerable.Empty<User>().Count()));

    rk4n, 18 Сентября 2012

    Комментарии (5)
  2. C# / Говнокод #11760

    +140

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    private void SendFile(string root, string url, DateTime dateTimeBegin)
    {
    	if ( ... isSend ... )
    	{
    		...MoveToArchive();
    		...Dispose();
    	}
    	else
    	{
    		SendFile(root, url, dateTimeBegin);
    	}
    }

    Ну тут всё ясно...
    Если файлики отсылаются нормально, то всё работает хорошо.
    Зато если файлики не отсылаются, то начинается злая рекурсия, которая постепенно сжирает всю память :).

    ddv_demon, 13 Сентября 2012

    Комментарии (12)
  3. C# / Говнокод #11757

    +141

    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
    72. 72
    73. 73
    internal static double GetExtendedFromBytes(byte[] bytes)
            {
                /*
                    1   15      1   63
                    s   e       i 	f
    
                        The value v of the number is given by: 
                    if 0 <= e < 32767, then v = (-1)s * 2(e-16383) * (i.f) 
                    if e = 32767 and f = 0, then v = (-1)s * Inf 
                    if e = 32767 and f <> 0, then v is a NaN
                 */
                const int memSize = 10;
                if (bytes == null)
                    throw new ArgumentNullException("bytes");
                if (bytes.Length != memSize)
                    throw new ArgumentException("Must be " + memSize + " bytes", "bytes");
    
                int s = bytes[0] >> 7;
                int e = 0x7FFF & ((bytes[0] << 8) | bytes[1]);
                int i = bytes[2] >> 7;
                ulong f = (ulong)(0x7F & bytes[2]);
                for (int j = 3; j < memSize; j++)
                {
                    f <<= 8;
                    f |= bytes[j];
                }
    
                decimal df = (decimal)f / 10000000000000000000 /* 10^19 */; // число f в формате 0.f
                double v;
                if (0 <= e && e < 32767)
                {
                    int pow = e - 16383;
                    decimal c = (s == 0 ? 1 : -1) * (decimal)Math.Pow(2, pow);
                    decimal dv = c * (i + df); // значение, полученное по формуле для x86 Extended Precision Format
    
                    if (f != 0) // HACK при вычислении по формуле искомое значение не удается получить - исправляем
                    {
                        const decimal mn = 0.0776627963145224192m; // magic number, при значениях отличных от 2^x возникает разница кратная этому значению
    
                        decimal delta = Math.Abs(dv - c);
                        decimal add = 0;
                        if (pow >= 4)
                            add = Math.Round(delta * 1.0842021724855044340074528009m); // еще magic number
                        else if (pow >= 2)
                            add = Math.Ceiling(delta);
                        else if (pow >= 0)
                            add = Math.Ceiling(delta * 10) / 10m;
                        else
                        {
                            decimal m = 10m * (decimal)Math.Pow(2, Math.Abs(pow));
                            add = Math.Ceiling(delta * m) / m;
                        }
                        if (dv > 0)
                            dv += add * mn;
                        else
                            dv -= add * mn;
                    }
                    v = (double)dv;
                }
                else if (e == 32767)
                {
                    if (f == 0)
                        v = s == 0 ? double.PositiveInfinity : double.NegativeInfinity;
                    else
                        v = double.NaN;
                }
                else
                {
                    throw new ArgumentOutOfRangeException("bytes");
                }
    
                return v;
            }

    Местные индусы постарались. Перевод 80 bit floating point в double. Причём если прочитать спецификацию IEEE-754, то код займет 3-4 строчки с простыми битовыми операциями.

    NetDeveloper, 12 Сентября 2012

    Комментарии (10)
  4. C# / Говнокод #11741

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    /// <summary>
    /// Убирает прибамбасы, такие как формат, кондишены и т.д.
    /// </summary>
    
    public virtual void ClearFutures()
    {}

    Да просто пиздец всему будущему при вызове метода.

    grobotron, 10 Сентября 2012

    Комментарии (18)
  5. C# / Говнокод #11740

    +104

    1. 1
    [Obsolete( "Пока не потдерживается" )]

    Каких шта приставки русски язык?

    grobotron, 10 Сентября 2012

    Комментарии (5)
  6. C# / Говнокод #11737

    +108

    1. 1
    2. 2
    3. 3
    4. 4
    if (!"12345".Contains(Model.quarter.ToString()))
    {
        m1 = m2 = m3 = "ошибка";
    }

    Немного восхитительного кода утром в понедельник.
    Тип данных Model.quarter Int32. Код из шаблона Razor

    CrazyMORF, 10 Сентября 2012

    Комментарии (7)
  7. C# / Говнокод #11733

    +123

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    static void Main() {
        Random random = new Random();
        ...
        int n1 = notations[random.Next(max)];
        int n2 = notations[random.Next(max)]; // дублирование кода!
        ....
        //исправлено на
        int n1 = notations[random.Next(max)];
        int n2 = n1;
    }

    vistefan, 09 Сентября 2012

    Комментарии (86)
  8. C# / Говнокод #11726

    +117

    1. 1
    new bool();

    сишарпненько...

    TarasB, 08 Сентября 2012

    Комментарии (36)
  9. C# / Говнокод #11718

    +137

    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
    public static IEnumerable<Step> OdometerPeriodicChecker(ScaleContext context)
        {
          //проверить, существуют ли таблицы
          OdometerTaskHlp.CheckAndCreateTables();
    
          while (context.IsRunning)
          {
            //Десятисекундная задержка после запуска программы
            yield return new WaitStep(TimeSpan.FromSeconds(10));
    
            try
            {
              foreach (LightAuto auto in context.Auto.All)
              {
                //CarOdometerChecker(context, auto);
              }
    
            }
            catch (Exception ex)
            {
              TraceHlp2.WriteException(ex);
            }
    
            //задержка выполнения задачи на 3 часа
            yield return new WaitStep(TimeSpan.FromSeconds(OdometerTaskHlp.TimeInterval * 3600));
          }

    Они запускают отдельный поток,
    в потоке запускают этот метод while (context.IsRunning).
    Потом им надо вернуться из задачи, для этого используется yield return.

    Flyperformances, 06 Сентября 2012

    Комментарии (4)
  10. C# / Говнокод #11717

    +112

    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
    public class _
    { ...some code... }
    
    public class ClassHelper : _
    { ...more code... }
    
    в другой сборке
    
    public class __
    { ...some code... }
    ...
    //Разработчик понял, что начинает путаться в именах классов _ и __ и написал
    
    public class lib : __
    { ... }

    Flyperformances, 06 Сентября 2012

    Комментарии (13)