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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    revision = String.Format("{0}{1:d2}{2:d2}",
    				DateTime.Now.Year.ToString().Substring(2),
    				DateTime.Today.Month,
    				DateTime.Today.Day);

    видно автор хотел сделать
    revision = DateTime.Today.ToString("yyMMdd");

    http://www.codeproject.com/Articles/272551/Custom-Assembly-Versioning-with-VS-2010-and-MSBUIL

    graph_di5, 28 Октября 2012

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

    +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
    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
    static /*public*/ string GenerateRandomJpegName()
            {
                return GenerateRandomString() + ".jpg";
            }
     
            static string GenerateRandomString()
            {
                bool UseSigns = true;
                bool UseUpperLetters = true;
                bool UseLetters = true;
                int Length;
            NewLabel:
                try
                {
                    Length = new Random(DateTime.Now.Millisecond - DateTime.Now.Second + new Random(DateTime.Now.Millisecond).Next(0, 100) / new Random(DateTime.Now.Millisecond - DateTime.Now.Second).Next(0, 10)).Next(0, 100);
                }
                catch { goto NewLabel; }
                string result = "C:/";
                try
                {
                    int Seed = 0;
                    char[] letters = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' };
                    char[] signs = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
                    List<char> keyWords = new List<char>();
                    List<char> upperLetters = new List<char>();
                    foreach (char c in letters)
                        upperLetters.Add(Convert.ToChar(c.ToString().ToUpper()));
                    if (UseLetters)
                        foreach (char c in letters)
                            keyWords.Add(c);
                    if (UseSigns)
                        foreach (char c in signs)
                            keyWords.Add(c);
                    if (UseUpperLetters)
                        foreach (char c in upperLetters)
                            keyWords.Add(c);
                    int MaxValue = keyWords.Count;
                    for (int i = 0; i <= Length; i++)
                    {
                        try
                        {
                            Random mainrand = new Random(Seed);
                            char RandChar = keyWords[mainrand.Next(0, MaxValue)];
                            result += RandChar;
                            Seed += DateTime.Now.Millisecond + Seed - new Random().Next(10) + new Random(DateTime.Now.Millisecond + 800 * 989 / 3).Next(10);
                        }
                        catch { continue; }
                    }
                }
                catch { }
                return result;
            }

    Вместо одного вызова Path.GetRandomFileName

    psina-from-ua, 28 Октября 2012

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

    +175

    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
    public static IEnumerable<float> Single(float from, float to, float step)
            {
                if (step <= 0.0f) step = (step == 0.0f) ? 1.0f : -step;
     
                if (from <= to)
                {
                    for (float f = from; f <= to; f += step) yield return f;
                }
                else
                {
                    for (float f = from; f >= to; f -= step) yield return f;
                }
            }
     
    public static IEnumerable<double> Double(double from, double to, double step)
            {
                if (step <= 0.0) step = (step == 0.0) ? 1.0 : -step;
     
                if (from <= to)
                {
                    for (double d = from; d <= to; d += step) yield return d;
                }
                else
                {
                    for (double d = from; d >= to; d -= step) yield return d;
                }
            }

    Такие методы накопированы для всех типов данных, которые известны поциенту.
    Но особо интересны эти джва метода

    Unlike some other programmimg languages (notably F#), C# doesn't have any built-in support for dealing with ranges of numbers. The .NET Framework does have the Enumerable.Range() method.
    - It can only deal with Int32's.
    - You can't specify a 'step' from one element of the range to the next. In effect, the step is always one. In this article, I'd therefore like to present a static Range class to deal with these deficiencies.

    http://www.c-sharpcorner.com/uploadfile/b942f9/dealing-with-ranges-of-numbers-in-C-Sharp

    3.14159265, 26 Октября 2012

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

    +139

    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 string WorkerSexWord
            {
                get
                {
                  if(WorkerSex == true)
                  {
                      return "м";
                  }
                  if(WorkerSex == false)
                  {
                      return "ж";
                  }
                    return "";
                }
            }

    "м" или "ж" выбор с булевого поля

    bercerker, 25 Октября 2012

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

    +130

    1. 1
    void RetreiveAddressInfo(ref string shipToName, ref string streetAddress, ref string streetAddress2, ref string city, ref string state, ref string zip);

    abatishchev, 25 Октября 2012

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

    +141

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public sealed class CustomProvider
    {
         private readonly object _SyncRoot = new object();
     
        public CustomProvider()
        {
                 lock(_SyncRoot)
                 {

    А вообще, если честно, создание экземпляра класса предка (object) всех классов, чтобы произвести захват критической секции - это так печально. Одному мне эта техника кажется удобной, но странной? Нет чтобы создать класс CriticalSection или что-то такое. А они создают объект совсем не связанный с синхронизацией. Не самодокументированно и тут явно какая-то переголова скрывается при создании объекта, по затратам памяти и системных ресурсов, что в каждый объект на уровне имплементации языка приходится по критической секции добавлять.
    Кстати, там как реализована эта критическая секция? Хендл этой критической секции фактически системный ресурс и для него по идеи нужно вызывать Dispose, но это не происходит. Тогда почему этих системных хендлов критической секции хватает, хотя ситуация без Dispose похожа на утечку системных ресурсов?

    Если кто подумал про lock(this), то это плохо с точки зрения проектирования класса и его последующего использования, поэтому идея с private _SyncRoot - это правильно. Ведь lock(this) (под this в последнем случае имеется данный экземпляр класса), может использоваться и снаружи класса, что может быть пересинхронизацией.

    HaskellGovno, 24 Октября 2012

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

    +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
    public static string GetFormURLParams(bool ld, bool размещен, bool зарегистр, bool поступил, bool неДляРазмещения, bool удален,
    									  string nomerDoc, string vhIshNom, string naim, string ntd,
    									  string vidDoc, string razdel, string tipDok,
    									  NullableDateTime датаДок1, bool датаДокПериод, NullableDateTime датаДок2,
    									  NullableDateTime датаРег1, bool датаРегПериод, NullableDateTime датаРег2,
    									  Территория территория, Улица улица, String дом1, Boolean диапазон, String дом2,
    									  string keyWords, bool scYes, bool scNo, bool scCancel)
    {
    	var str = GetOnlyOwnParams(ld, размещен, зарегистр, поступил, неДляРазмещения, удален,
    							   nomerDoc, vhIshNom, naim, ntd,
    							   vidDoc, razdel, tipDok,
    							   keyWords, scYes, scNo, scCancel);
    
    	str += DatePickerPeriod.GetParams("dt1", датаДок1, датаДокПериод, датаДок2);
    	str += DatePickerPeriod.GetParams("dt2", датаРег1, датаРегПериод, датаРег2);
    	str += AdresSearch.GetParams("adr", территория, улица, дом1, диапазон, дом2);
    
    	return str;
    }

    ни много ни мало

    wAngel, 24 Октября 2012

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

    +136

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    double thresholdDepth = 0;
    if (!txtThresholdDepth.Text.Equals(String.Empty) && !txtThresholdDepth.Text.StartsWith(CultureInfo.CurrentCulture.NumberFormat.NegativeSign))
    {
    	thresholdDepth = Double.Parse(txtThresholdDepth.Text);
    }
    else
    {
    	Log.Print("Input threshold value");
    	return;
    }

    redrick, 24 Октября 2012

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

    +134

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    public static byte[] ConvertToMessage(Stream stream)
            {
                int length = (int) stream.Length;
                byte[] buffer = new byte[length + 4];
                buffer[0] = (byte) (length & 0xff);
                buffer[1] = (byte) ((length & 0xff00) >> 8);
                buffer[2] = (byte) ((length & 0xff0000) >> 16);
                buffer[3] = (byte) ((length & 0xff000000L) >> 24);
                stream.Read(buffer, 4, length);
                return buffer;
            }

    А товарищи знают толк в извращенствах

    Yukiakze, 19 Октября 2012

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

    +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
    using System;
     
    class TLockCriticalSystemResource : IDisposable
    {
            public TLockCriticalSystemResource(){Console.WriteLine("Acquire critical system resource");}
            public void Dispose(){Console.WriteLine("Release critical system resource");}
            public bool Property1{private get{return true;}set{throw new Exception();}}
    }
     
    public class Test
    {
            public static void Main()
            {
                    using (var file = new TLockCriticalSystemResource()
                            {
                                    Property1=true
                            })
                    {
                        // Делаем чего-то с ресурсом
                    }
            }
    }

    Ололо. using не даёт гарантию безопасности с точки зрения исключений:
    http://ideone.com/nHDIJ
    Системный ресурс остался захваченным.

    LispGovno, 17 Октября 2012

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