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

    +53

    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
    const char *GetExternalFilesDir ()
      {
        assert (started);
        static std::string s="";
        if (s.length()==0)
        {
          LOGI("Try get external files dir");
          jclass c; jmethodID m; jobject o;
    
          c = env->FindClass        ("android/app/NativeActivity");
          m = env->GetMethodID      (c, "getExternalFilesDir", "(Ljava/lang/String;)Ljava/io/File;");
          o = env->CallObjectMethod  (appState->activity->clazz, m, NULL);
    
          c = env->GetObjectClass    (o);
          m = env->GetMethodID      (c, "getAbsolutePath", "()Ljava/lang/String;");
          o = env->CallObjectMethod  (o, m);
          jstring jo = (jstring)o;
    
          const char *path = env->GetStringUTFChars(jo, NULL);
          s=path;
          env->ReleaseStringUTFChars(jo, path);
          s+='/';
          LOGI("Path for program's data files is %s", s.c_str());
        }
        return s.c_str();
      }

    Этот код был написан одним очень известным в очень узких кругах человеком. Будем надеяться, что он придет в обсуждение и прокомментирует его.

    DlangGovno, 04 Ноября 2014

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

    +55

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    void input (char inpt [64])
    {
    	for (;;)
    	{
    		int i(0);
    		cin >> inpt;
    		i ++;
    		if (inpt[i] == '\n')
    			inpt[i] = '\0';break;
    	}
    }

    normbo, 03 Ноября 2014

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

    +139

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    struct Counter{
    	static int k;
    	Counter(){ k++; }
    	~Counter() { k--; }
    };
    int Counter::k = 0;
    #define LOL(x) {string s = #x; Counter c##x; cout<<s.substr(0,1+s.find('['))<<Counter::k<<"]="<<x<<'\n'; }

    Abbath, 01 Ноября 2014

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    while (1) { // Не все знают логические значения
        ...
    }
    
    for (;;) // Ещё хуже
    { ... }

    nns2009, 31 Октября 2014

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

    +135

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    void SoundService::stop(){
        if (mOutputMixObj != NULL) {
            (*mOutputMixObj)->Destroy(mOutputMixObj);
            mOutputMixObj = NULL;
        }
        if(mEngineObj != NULL){
            (*mEngineObj)->Destroy(mEngineObj);
             mEngineObj = NULL; mEngine = NULL;
        }
    }

    Случайно нашёл в книге по Android NDK, открытой на случайной странице.

    tehned, 30 Октября 2014

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

    +145

    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
    //bytes 0-13
      bmp.push_back('B'); bmp.push_back('M'); //0: bfType
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); //2: bfSize; size not yet known for now, filled in later.
      bmp.push_back(0); bmp.push_back(0); //6: bfReserved1
      bmp.push_back(0); bmp.push_back(0); //8: bfReserved2
      bmp.push_back(54 % 256); bmp.push_back(54 / 256); bmp.push_back(0); bmp.push_back(0); //10: bfOffBits (54 header bytes)
    
      //bytes 14-53
      bmp.push_back(40); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //14: biSize
      bmp.push_back(width % 256); bmp.push_back(width / 256); bmp.push_back(0); bmp.push_back(0); //18: biWidth
      bmp.push_back(height % 256); bmp.push_back(height / 256); bmp.push_back(0); bmp.push_back(0); //22: biHeight
      bmp.push_back(1); bmp.push_back(0); //26: biPlanes
      bmp.push_back(outputChannels * 8); bmp.push_back(0); //28: biBitCount
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //30: biCompression
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //34: biSizeImage
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //38: biXPelsPerMeter
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //42: biYPelsPerMeter
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //46: biClrUsed
      bmp.push_back(0); bmp.push_back(0); bmp.push_back(0); bmp.push_back(0);  //50: biClrImportant

    blackhearted, 30 Октября 2014

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

    +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
    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
    //Pacчитывaeт пo дaнным кoopдeнaтaм и дaнным paзмepaм экpaнa тeкcтypныe кoopдeнaты и зaпиcывaeт
    //в мaccив, чтoб GL пpям тaк cъeл
    void ImageScopeToTexCoordWithMaterialSize(TImageScope img, float sx, float sy, float*tex)
    {
    .....
    //Пepecчитывaeм тeкcтypныe кoopдeнaты
    .....
       //Koнcтpyктop, кoтopый пpи coздaнии caм ceбя дoбaвить в peдep лиcт
    .....
      //Koнcтpyктop, кoтopый пpocтo coздacт oбeкт. B лиcт peндepингa нyжнo дoбoвлять caмocтoятeльнo
    .....
    //Пpocтo pиcyeт нa экpaнe HUD oбeкт. Пpeдпoлaгaeтcя, чтo тeкcтypa кoтopyю бyдим нaклaдывaть yжe выбpaнa.
    //Paбoтaeт бeз вcякoй oптимизaии, тaк чтo лyчшe пoльзoвaть кoмпaнeнт, чeм ee. Ee тoлькo ecли
    //oчeнь пpиcпичит вывoдить гpaфикy бeз oбeктa
    .....
    //GUI мeнaджep. B нeм зaпиcaны кapдинaты мeтoк тeкcтypы+caмa тeкcтypa, a GUI кoмпaнeнты тoлькo oтcюдa этo и тянyт
    //Пoкa зaпиcи нyжнo coздaвaть caмocтoятeльнo, нo кaк тoлькo paзбиpycь c нopмaльнoй oтpиcoвкoй GUI oбязaтeльнo зaймycь
    .....
    //Бaзoвый GUI кoмпaнeнт. Умeeт тoлькo pиcoвaть cвoй кoмпaнeнт, ecли дaть eмy мeнaджep
    class TGUIBase: public TBaseObject
    {
    private:
    float width;//Шиpeнa цeнтpaльнoй чacти
    float height;//Bыcoтa цeнтpaльнoй чacти
    GLfloat gui[8];//Koopдинaты вepтикcoв
    //GLfloat*tex;//Koopдинaты вepшин
    vec2f positions[9];//Koopдинaты элeмeнтoв
    vec2f sizes[9];//Paзмepы элимeнтoв
    bool NeedFindSize;//Hyжнo ли пepecчитывaть
    vec3f oldpos;//Cтapыe кoopдинaты
    TGUIImage*oldimg;//Cтapый cкин
    vec2f oldsize;//Cтapыe paзмepы
    TObjList*stack;
    GLfloat alltex[9][8];//Bce тeкcтypныe вepтeкcы
    .....
    void CalcCoords(void*viewer);//Cчитaeм peaльныe пoзиции нa экpaнe. Bызывaть, тoгдa, кoгдa кapдинaты измeнeны
    .....
    void CalcTextureCoords(void*viewer);//Pacчитывaeм вce тeкcтypныe кopдинaты, вызывaть пpи вcякoй cмeнe
    .....
          // вpoщaeм нa ocтaвшийcя yгoл
          if(lastRotX != 1.0f)
          {
             // Чтoбы нaйти ocь, вoкpyг кoтopoй вpaщaтьcя ввepx и вниз, нyжнo 
             // нaйти вeктop, пepпeндикyляpный вeктopy взглядa кaмepы и 
             // вepтикaльнoмy вeктopy.
             // Этo и бyдeт нaшa ocь. И пpeждe чeм иcпoльзoвaть этy ocь, 
             // нeплoxo бы нopмaлизoвaть ee.
    .....
    //Boзвpaщяeт cкoлькo милиcикyнд пpoшлo oт нaчaлa aпycкa кoмпьютepa
    unsigned long GetNowTime()
    {
    return GetTickCount();
    }
    .....
    class TCamera: public TBaseObject
    {
    
    public:
    bool LookPoint;//Cмoтpeть нa тoчкy Direction или в нaпpoвлeнии Direction
    float Angle;//Угoл зpeния
    float FarVision;//To кaк дaлeкo видить
    float NearVision;//To кaк близкo видить
    .....
    //**Moдyль paбoты c тyмaнoм. Зaвepшoн**//
    .....
    //Пepeвoдит кapдинaты из пикceльныx (2D) в eдиничныe, c yчeтoм paзмepoв экpaнa
    //x y - кapдинaты в пикcиляx
    //sx sy - paзмepы экpaнa в пикcиляx
    .....

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

    Pythoner, 30 Октября 2014

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

    +42

    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
    class Message {
    public:
        explicit Message(Level level);
        ~Message();
    
        Level level() const { return level_; }
        const time_t& time() const { return time_; }
        std::string text() const { return s_.str(); }
        bool enabled() const { return enabled_; }
    
        template<class T>
        Message& operator << (const T& t)
        {
            if (enabled_)
                s_ << t;
            return *this;
        }                                                                                       
    
        Message(Message& msg) { moveFrom(msg); }
        Message& operator = (Message& msg) { moveFrom(msg); return *this; }
        struct Ref {
            explicit Ref(Message& msg): msg_(&msg) {}
            Message* msg_;
        };                                                                                                                                
        operator Ref() { return Ref(*this); }
        Message(Ref r) { moveFrom(*r.msg_); }
        Message& operator = (Ref r) { moveFrom(*r.msg_); return *this; }
    
    private:
        Level level_;
        time_t time_;
        std::ostringstream s_;
        bool enabled_;
    
        void moveFrom(Message& msg)
        {
            level_ = msg.level_;
            time_ = msg.time_;
            s_.str(msg.s_.str());
            enabled_ = msg.enabled_;
            msg.enabled_ = false;
        }
    };

    move головного мозга

    roman-kashitsyn, 30 Октября 2014

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

    +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
    _DECLSPEC void StringToHex(
       const _tstring &ts, 
       BYTE *pBuffer, 
       size_t nBytes)
    {
       USES_CONVERSION;
    
       const std::string s = T2A(const_cast<PTSTR>(ts.c_str()));
    
       for (size_t i = 0; i < nBytes; i++)
       {
          const size_t stringOffset = i * 2;
    
          BYTE val = 0;
    
          const BYTE b = s[stringOffset];
    
          if (isdigit(b)) 
          {
             val = (BYTE)((b - '0') * 16); 
          }
          else 
          {
             val = (BYTE)(((toupper(b) - 'A') + 10) * 16); 
          }
    
          const BYTE b1 = s[stringOffset + 1];
    
          if (isdigit(b1)) 
          {
             val += b1 - '0' ; 
          }
          else 
          {
             val += (BYTE)((toupper(b1) - 'A') + 10); 
          }
    
          pBuffer[i] = val;
       }
    }

    ночнём-с, ребзя!

    blackhearted, 30 Октября 2014

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

    +145

    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
    int boolToInt(bool b)
    {
    	bool * boolPtr = &b;
    	char * boolToCharPtr = reinterpret_cast<char *>(boolPtr);
    	char * resultCharPtr;
    	resultCharPtr = (char*) malloc(4);
    
    	for (int i = 0; i < sizeof(int); i++)
    	{
    		if (i == 0)
    		{
    			resultCharPtr[i] = boolToCharPtr[0];
    		}
    		if (i == 1)
    		{
    			resultCharPtr[i] = 0x00;
    		}
    		if (i == 2)
    		{
    			resultCharPtr[i] = 0x00;
    		}
    		if (i == 3)
    		{
    			resultCharPtr[i] = 0x00;
    		}
    	}
    
    	int * intPtr = reinterpret_cast<int *> (resultCharPtr);
    	return *intPtr;
    }

    Удобная функция для конвертации bool в int

    lazorg, 29 Октября 2014

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