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

    +133

    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
    //checks if the string is a hex stream e.g. "31 32 33 6A F8"
            private bool _IsHexStream(string sValue)
            {
                sValue = sValue.Trim();
    
                
                if (sValue.Length < 2)
                {
                    return false;
                }
    
                for (int i = 0; i < sValue.Length; i++)
                {
                    if(_IsHexChar(Convert.ToChar(sValue.Substring(i,1))) == false)
                    {
                        return false;
                    }
                }
    
                //every third char must be a space, only possible in case of two bytes
                if (sValue.Length > 3)
                {
                    for (int i = 2; i < sValue.Length; i += 3)
                    {
                        string sBuffer = sValue.Substring(i, 1);
    
                        if (sBuffer.Equals(" ") == false)
                        {
                            return false;
                        }
                    }
                }
    
                //string is a hex stream 
                return true;
            }

    blackhearted, 02 Июня 2014

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

    +134

    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
    TestScriptResult Test_method( ... )
    {
    	TestScriptResult result = new TestScriptResult();
    	object obj = null;
    	///...
    	obj = foo.Set(...);
    	if (obj.GetType() == typeof(Exception))
    	{
    		result.SetResult(TestScriptResult.eTestResult.FAIL_SET_REQUEST, ((Exception)obj).Message);
    		_LogTestMethodEnd(result);
    		return result;
    	}
    	else
    	{
    	}
    }
    
    public Object Set(...)
    {
    	//...
    	if(CheckForErrors(res) == true)
    	{
    		//create error description
    		string sErrorDescription = string.Format("Error during ...."));
    		//create exception object and return this
    		Exception ex = new Exception(sErrorDescription);
    		//error logging
    		m_logger.Error(sErrorDescription);
    		return ex;
    	}
    	else
    	{
    	}
    }

    Ну нах так жыть, котаны???

    blackhearted, 02 Июня 2014

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

    +133

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    panel1.Visible = checkBoxCCF.Checked;
    panel2.Visible = checkBoxReliabilty.Checked;
    panel3.Visible = checkBoxRisk.Checked;
    panel4.Visible = checkBoxSaftey.Checked;
    panel5.Visible = checkBoxSensitivity.Checked;
    panel6.Visible = checkBoxThroughput.Checked;
    panel7.Visible = checkBoxUncertainity.Checked;

    Почему половина переменных нормальные, половина нет? Логика некоторых погромистов зашкаливает...

    kostoprav, 28 Мая 2014

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

    +136

    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
    // Определить тип ОС
       string OSVersion = null;
       try
       {
        try
        {
         OSVersion = Microsoft.Win32.Registry.GetValue(@"HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\", "ProductName", "").ToString();
        }
    
        catch (NullReferenceException)
        {
        OSVersion = "";
        }
       }
       
       catch (SecurityException)
       {
        OSVersion = "";
       }
    
       finally {} // иначе при вложенном try ошибка

    Говницо собственного производства, когда учился программировать на первой работе.

    Smekalisty, 27 Мая 2014

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

    +135

    1. 1
    2. 2
    3. 3
    var methods = from mi in typeof(T).GetMethods()
    	  where !mi.IsAbstract && mi.Name == methodName
    	  select mi;

    LINQ over Reflection

    kostoprav, 21 Мая 2014

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

    +134

    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
    // Как вы думаете какой вариант кода более правильный?
    using System;
    using System.Linq;
    public class Program {
        public static int Puzzle(string s) {
            return s.Where(x=>x=='a').Count();
        }
    }
    // Или вот этот?
    using System;
    using System.Linq;
    public class Program {
        public static int Puzzle(string s) {
            return s.Count(x=>x=='a');
        }
    }
    //С точки зрения Майкрософт 1-ый вариант лучше

    Майкрософт запустила игру головоломку, каждая из головоломок решается определнным кодом. После - элегантность решения оценивается, весьма неоднозначным способом.
    Подробнее - https://www.codehunt.com/ и статейка на хабре http://habrahabr.ru/post/223173/ . Данная особенность замечена не мной, задачи 2.06 и 2.07

    Zuzik, 18 Мая 2014

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

    +132

    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
    public void Check()
    {
    	try
    	{
    		this.Function = "check";
    		this.Params = HttpUtility.UrlEncode((this.Params), Encoding.GetEncoding(1251));
    
    		if ((this.Function.Length > 0) &&
    			(this.PaymExtId.Length > 0) &&
    			(this.PaymSubjTp.ToString().Length > 0) &&
    			(this.Amount.ToString().Length > 0) &&
    			(this.Params.Length > 0) &&
    			(this.TermType.Length > 0) &&
    			(this.TermId.Length > 0) &&
    			(this.FeeSum.ToString().Length > 0))
    		{
    			this.Request = string.Format("function={0}&PaymExtId={1}&PaymSubjTp={2}&Amount={3}&Params={4}&TermType={5}&TermID={6}&FeeSum={7}",
    										 this.Function, this.PaymExtId, this.PaymSubjTp.ToString(), this.Amount.ToString(), this.Params, this.TermType, this.TermId, this.FeeSum.ToString());
    			SendRequest();
    		}
    		else
    		{
    			GetError("-1");
    		}                
    	}
    	catch
    	{
    		GetError("-9");
    	}
    }

    Оттуда же. Тип полей PaymSubjTp, Amount, FeeSum - int, всех остальных - string.
    Amount.ToString().Length > 0 и т.п. всегда true, а вот ноль или отрицательное значение спокойно пропустят.
    Интересно, разработчики хоть знают, что функции умеют принимать и возвращать данные? :)

    yamamoto, 18 Мая 2014

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

    +135

    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
    private void SendRequest()
    {
    	try
    	{
    		HttpWebRequest HTTPRequest;
    
    		try
    		{                    
    			HTTPRequest = (HttpWebRequest)WebRequest.Create(this.Host + this.Request);
    			HTTPRequest.ClientCertificates.Add(this.certificate);                    
    		}
    		catch
    		{
    			throw new Exception("-2");
    		}
    
    		try
    		{
    			HttpWebResponse response = (HttpWebResponse)HTTPRequest.GetResponse();
    			Stream stream = response.GetResponseStream();
    			TextReader xml = new StreamReader(stream, Encoding.GetEncoding(1251));
    
    			this.Response = xml.ReadToEnd();
    			stream.Close();
    			response.Close();
    		}
    		catch
    		{
    			throw new Exception("-3");
    		}
    
    		GetError("0");
    	}
    	catch (Exception ex)
    	{
    		GetError(ex.Message);
    		this.Response = "ОШИБКА!";
    	}
    }

    Оттуда же. Круговорот исключений в природе.

    yamamoto, 17 Мая 2014

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

    +133

    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
    public void ExtIdGen()
    {
    	try
    	{
    		Random rnd = new Random();
    		string uin = "";
    		for (int i = 0; i < 20; i++)
    		{
    			uin += rnd.Next(10).ToString();
    		}
    
    		this.ExtId = uin;
    
    		GetError("0");
    	}
    	catch
    	{
    		GetError("-6");
    	}
    }
    
    private void GetError(string error_code)
    {
                switch (error_code)
                {
                    case "0":
                        this.LastErrorCode = 0;
                        this.LastErrorDescription = "Нет ошибок";
                        break;
    		// -1 .. -5
                    case "-6":
                        this.LastErrorCode = -6;
                        this.LastErrorDescription = "Ошибка при получении идентификатора запроса";
                        break;
                }
    }

    LastErrorCode, LastErrorDescription, ExtId - public поля.
    Там весь класс написан в таком стиле, с вызовами GetError, принимающими номер ошибки в виде строки, молчаливым catch-ем всех исключений и т.п.

    yamamoto, 17 Мая 2014

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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    private byte Summ(byte a, byte b, byte p)
            {
    
                return Or(Or(Or(And(p, Not(a)), And(p, Not(b))), Or(And(b, Not(a)), And(b, Not(a))))Or(And(a, Not(b)),And(a, Not(p))), ()) ;//тут я и сломался 
             
            }

    Shadowy1, 17 Мая 2014

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