1. C++ / Говнокод #13909

    −4

    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
    static Singleton * g_pInstance = NULL;
    
    Singleton* Singleton::sharedInstance()
    {
        if (g_pInstance)
            return g_pInstance;
        else {
            g_pInstance = new Singleton();
            if (g_pInstance->init()) {
                return g_pInstance;
            } else {
                delete g_pInstance;
                g_pInstance = NULL;
            }
            return g_pInstance;
        }
    }

    Ещё из жизни синглтонов. Даёшь больше return'ов!

    Deacon, 08 Октября 2013

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

    +16

    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
    // in .h file
    class Singleton
    {
    public:
        Singleton();
        ~Singleton();
    private:
        static Singleton* m_Instance;
        friend Singleton& GetInstance();
    };
    
    inline Singleton& GetInstance()
    {
        assert(Singleton::m_Instance);
        return *Singleton::m_Instance;
    }
    
    // in .cpp file
    Singleton* Singleton::m_Instance = NULL;
    
    Singleton::Singleton()
    {
        assert(!m_Instance);
        m_Instance = this;
    }
    
    Singleton::~Singleton()
    {
        m_Instance = NULL;
    }

    Вот такую реализацию синглтона увидел в одном проекте.
    ЗЫ: Для его корректной работы, в main было написано конечно же:
    main() {
    Singleton* s = new Singleton;
    ...
    delete s;
    }

    Deacon, 08 Октября 2013

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

    +8

    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
    void SaveEncryptedFile( const char *text, int len, const char* filename )
    {
    	char* pEncryptedText = new char[strlen(text)+1];
    	string x1 = "you'll";
    	string x2 = "never";
    	string x3 = "get a";
    	string x4 = "password";
    	char l_pBuf[255];
    	sprintf(l_pBuf,"%d",30*11/3);
    	string result = x1+x2+x2+x1+l_pBuf+x3;
    	encryptString(text,pEncryptedText,result.c_str(),strlen(text),result.length()); // там внутри xor
    
    	FILE* pFile = fopen(filename, "wb");
    	if (pFile)
    	{
    		fwrite(pEncryptedText,sizeof(char),len,pFile);
    		fclose(pFile);
    	}
    
    	delete[] pEncryptedText;
    }

    Нашёл в рабочем проекте. Для "расшифровки" файла используется ещё одна такая же функция.

    Deacon, 07 Октября 2013

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

    +8

    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
    const Registry & Registry::getInstance()
    {
    	Registry *instance = RegistrySingleton::instance();
    	if (!instance->mRootNode) {
    		instance->load();
    	}
    	return *instance;
    }
    
    void Registry::load()
    {
    	try {
    		// ...
    		if (!mReader) {
    			mReader = XMLReaderFactory::createXMLReader();
    		}
    		// ...
    		mReader->parse( ... );
    	} catch (...) {
    		// ...
    		throw; // удачи всем пользователям обрабатывать исключения xerces...
    	}
    }

    боян синглтонно-абстрактный для чтения xml конфигурации с помощью xerces.

    и не только ошибки не обрабатаешь (потому что getInstance() их бросает, угадай какой именно вызов из сотен загружает конфигурацию), но и в добавок народ не впечатал как многопоточность сделать правильно (RegistrySingleton это специализация шаблона который синхронизирует инициализацию mInstance переменной, и только).

    Dummy00001, 07 Октября 2013

    Комментарии (15)
  5. Python / Говнокод #13904

    −100

    1. 1
    2/3

    ПИТОНОПРОБЛЕМЫ ;)

    P.S. Да, я читал доки. Не меня в них тыкать носом.

    bormand, 07 Октября 2013

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

    +138

    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
    if ("A" == Key.ToUpper().Substring(startIndex, 1))
            num = 11L;
          else if ("B" == Key.ToUpper().Substring(startIndex, 1))
            num = 12L;
          else if ("C" == Key.ToUpper().Substring(startIndex, 1))
            num = 13L;
          else if ("D" == Key.ToUpper().Substring(startIndex, 1))
            num = 14L;
          else if ("E" == Key.ToUpper().Substring(startIndex, 1))
            num = 15L;
          else if ("F" == Key.ToUpper().Substring(startIndex, 1))
            num = 16L;
          else if ("0" == Key.ToUpper().Substring(startIndex, 1))
            num = 0L;
          else if ("1" == Key.ToUpper().Substring(startIndex, 1))
            num = 1L;
          else if ("2" == Key.ToUpper().Substring(startIndex, 1))
            num = 2L;
          else if ("3" == Key.ToUpper().Substring(startIndex, 1))
            num = 3L;
          else if ("4" == Key.ToUpper().Substring(startIndex, 1))
            num = 4L;
          else if ("5" == Key.ToUpper().Substring(startIndex, 1))
            num = 5L;
          else if ("6" == Key.ToUpper().Substring(startIndex, 1))
            num = 6L;
          else if ("7" == Key.ToUpper().Substring(startIndex, 1))
            num = 7L;
          else if ("8" == Key.ToUpper().Substring(startIndex, 1))
            num = 8L;
          else if ("9" == Key.ToUpper().Substring(startIndex, 1))
          {
            num = 9L;
          }

    Программист, писавший ЭТО считал себя очень большим талантом и был даже тех.диром, пока не уволили....))

    CraxyFright, 07 Октября 2013

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

    −105

    1. 1
    2. 2
    3. 3
    4. 4
    - (void)reloadTableViewOnSecondaryThread
    {
    	[self performSelectorOnMainThread:@selector(reloadTableViewOnMainThread) withObject:nil waitUntilDone:NO];
    }

    Разглядывая код от заказчика нашёл вот такой перл!

    ProFFeSSoR, 06 Октября 2013

    Комментарии (5)
  8. Java / Говнокод #13901

    +69

    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
    package first;
    
    import java.util.Scanner;
    
    public class First {
    
    	public static void main(String[] args) {
    
    		String line = "Empty directories can be moved. If the directory is not empty,";
    
    		System.out.println("Enter simbol to delete:");
    		Scanner s = new Scanner(System.in);
    		String del = s.nextLine();
    		s.close();
    
    		StringBuilder sb = new StringBuilder(line);
    		for (int i = 0; i < sb.length(); i++) {
    			if (sb.charAt(i) == del.charAt(0)) {
    				sb.deleteCharAt(i);
    				
    			}
    		}
    
    		System.out.println(sb);
    	}
    
    }

    Это из раннего. Давно что-то не выкладывал, вот руки зачесались.

    spivti, 06 Октября 2013

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

    +124

    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
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    using System;
    class Example
    {
        static void Main()
        {
            int 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;
            for (a = 0; a < 2; a++)
            {
                for (b = 0; b < 2; b++)
                {
                    for (c = 0; c < 2; c++)
                    {
                        for (d = 0; d < 2; d++)
                        {
                            for (e = 0; e < 2; e++)
                            {
                                for (f = 0; f < 2; f++)
                                {
                                    for (g = 0; f < 2; g++)
                                    {
                                        for (h = 0; h < 2; h++)
                                        {
                                            for (i = 0; i < 2; i++)
                                            {
                                                for (j = 0; j < 2; j++)
                                                {
                                                    for (k = 0; k < 2; k++)
                                                    {
                                                        for (l = 0; l < 2; l++)
                                                        {
                                                            for (m = 0; m < 2; m++)
                                                            {
                                                                for (n = 0; n < 2; n++)
                                                                {
                                                                    for (o = 0; o < 2; o++)
                                                                    {
                                                                        for (p = 0; p < 2; p++)
                                                                        {
                                                                            for (q = 0; q < 2; q++)
                                                                            {
                                                                                for (r = 0; r < 2; r++)
                                                                                {
                                                                                    for (s = 0; s < 2; s++)
                                                                                    {
                                                                                        for (t = 0; t < 2; t++)
                                                                                        {
                                                                                            for (u = 0; u < 2; u++)
                                                                                            {
                                                                                                for (v = 0; v < 2; v++)
                                                                                                {
                                                                                                    for (w = 0; w < 2; w++)
                                                                                                    {
                                                                                                        for (x = 0; x < 2; x++)
                                                                                                        {
                                                                                                            for (y = 0; y < 2; y++)
                                                                                                            {
                                                                                                                for (z = 0; z < 2; z++)
                                                                                                                    Console.WriteLine(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);
                                                                                                            }
                                                                                                        }
                                                                                                    }
                                                                                                }
                                                                                            }
                                                                                        }
                                                                                    }
                                                                                }
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    Только начал изучать шарп и делать было нечего. Знаю что заминусуют но такой "тупейший шедевр" не могу сюда не скинуть

    Nubia_Y, 06 Октября 2013

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

    +4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    int eval (const Expr& e)
    {
        Match(e)
        Case(const Value& x) return x.value;
        Case(const Plus& x) return eval (x.e1)+eval(x.e2);
        Case(const Minus& x) return eval(x.e1)−eval(x.e2);
        Case(const Times& x) return eval(x.e1)∗eval(x.e2);
        Case(const Divide& x) return eval(x.e1)/eval (x.e2);
        EndMatch
    }

    Бьёрн Страуструп выбирает борщ.
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3449.pdf
    http://www.linux.org.ru/forum/development/9525806

    Заметим, что не только Страуструп раскаялся в прошлом. Кармак с энтузиазмом рассказывает, как с головой погрузился в Haskell и Scheme, объясняет, почему хаскель невероятно крут и почему сегодня он бы, вероятно, сделал QuakeScheme вместо QuakeC. Он пишет на хаскеле порт wolf3D.

    LispGovno, 05 Октября 2013

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