1. Objective C / Говнокод #14594

    −184

    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
    - (Pt) menuItemPos: (int) i colRef: (int *) colr
    {
        int rowBeg [6] = { 1, 8, 15, 22, 28, 100 };
        float rowNum [6] =  { 7, 7, 7, 6.0, 5.0 };// { 7.03, 6.72, 7, 5.65, 4.43 };
        int col = -5;
        int row = -5;
        for(int j = 1; j < 6; ++j)
            if(i < rowBeg[j] && i >= rowBeg[j - 1])
            {
                row = j - 1;
                col = i - rowBeg[row];
                *colr = col;
                break;
            }
        
        float S = _large ? 80 : 30;
        float W = _large ? 1474/2 : 320;
        float w = W - 2 * S;
        float dx = w / (rowNum[row] - 1);
        
       // float scX = _large ? 2.1 : 1.0;
        float scY = _large ? 2.0 : 1.0;
        float aX = _large ? 18 : 0;
        return ccp( (S + col * dx) + aX,  (210 - row * 56.0) * scY);
    }

    Хардкодинг 90 уровня. Все константы подобраны вручную, с заботой и любовью.

    tirinox, 15 Февраля 2014

    Комментарии (4)
  2. Java / Говнокод #14591

    +70

    1. 1
    2. 2
    .
    																		buffer.put(Transaction.getTransaction((JSONObject)transactionsData.get(j)).getBytes());

    Вложенность, например. Но это нужно видеть целиком.
    https://bitbucket.org/JeanLucPicard/nxt-public/src/

    rat4, 15 Февраля 2014

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

    −157

    1. 1
    2. 2
    3. 3
    4. 4
    SELECT ...
    FROM ...
    WHERE (CASE WHEN big_part = 1 AND blk_flag = 2 THEN -1 ELSE 0 END) <> -1 
    ;

    slbsomeone, 15 Февраля 2014

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

    +139

    1. 1
    var date = (DateTime.UtcNow.Date > DateTime.UtcNow ? DateTime.UtcNow.AddSeconds(1) : (DateTime.UtcNow.Date < DateTime.UtcNow ? DateTime.UtcNow.Date.AddSeconds(1) : DateTime.UtcNow));

    Обнаружил сегодня в процессе код ревью (получение даты в каком-то тесте, который писал джуниор). Пребываю в состоянии когнитивного диссонанса...

    aleksandr_kesha, 14 Февраля 2014

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

    +73

    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
    final double[][] matrix = new double[companies.size() + 1][(sampleSizeTo - sampleSizeFrom) / sampleSizeStep + 2];
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix[0].length; j++) {
            if (i == 0 && j == 0) {
                continue;
            }
            if (i == 0) {
                matrix[i][j] = sampleSizeFrom + (j - 1) * sampleSizeStep;
                continue;
            }
            if (j == 0) {
                matrix[i][j] = companies.get(i-1);
                continue;
            }
        }
    }

    Название функции getSmartDistibution (именно так) какбэ намекает, что дальше будет весело

    roman-kashitsyn, 14 Февраля 2014

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    public static string CreateBrowserCacheExtension(object key)
    {
        //...Остальной код опущен для ясности
        return "Cache=" + Math.Abs(key.GetHashCode());
    }

    Legacy code из проекта над которым я работаю.
    Косяк в том, что GetHashCode() иногда возвращает значение, равное System.Int32.MinValue.
    А это в свою очередь приводит к OverflowException, в случае с Math.Abs(...);

    pikowatt, 14 Февраля 2014

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

    +58

    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
    template <typename T>
    class MySharedPtr{
    public:
      explicit MySharedPtr(T* obj) : _obj(obj){}
      // --> я дописал
      MySharedPtr(const MySharedPtr& other) : _obj(other._obj){ inc_ref_count(_obj);}
      // <-- я дописал
      MySharedPtr& operator=(const MySharedPtr& other) {
        // --> я дописал
        if (this == &other)
          return *this;
        // <-- я дописал
        _obj = other._obj;
        inc_ref_count(_obj);
      }
      ~MySharedPtr(){
        dec_ref_count(_obj);
      }
    
    private:
      static void inc_ref_count(T* obj){
        std::lock_guard<std::mutex> lock(_mutex);
        _ref_count[obj] ++ ;
      }
    
      static void dec_ref_count(T* obj){
        std::lock_guard<std::mutex> lock(_mutex);
        if (--_ref_count[obj]){
          delete obj;
          _ref_count.erase(_ref_count.find(obj));
        }
      }
    
      T* _obj;
    
      static std::mutex MySharedPtr<T>::_mutex;
      static std::map<T*,int> MySharedPtr<T>::_ref_count;
    };
    
    
    template <typename T>
    std::map<T*,int> MySharedPtr<T>::_ref_count;
    
    
    template <typename T>
    std::mutex MySharedPtr<T>::_mutex;

    сегодня приходил чел-выпускник, написал на листочке shared_ptr, какое ваше мнение?

    LispGovno, 14 Февраля 2014

    Комментарии (63)
  8. PHP / Говнокод #14577

    +146

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    $synonyms = array(
        1 => 'once',
        2 => 'twice',
        3 => 'three times',
        4 => 'four times',
        5 => 'five times',
        6 => 'six times',
        7 => 'seven times',
        8 => 'eight times',
        9 => 'nine times',
        10 => 'ten times',
    );

    Dima, ты лучший!;)

    valllllera, 14 Февраля 2014

    Комментарии (31)
  9. PHP / Говнокод #14576

    +155

    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
    function compileStr($arrStrings) {
    	if (is_array($arrStrings)) {
    		$part1 = 'a:2:{s:5:"VALUE";a:';
    		$part2 = 's:11:"DESCRIPTION";a:';
    		$part3 = '}';
    
    		$ornums = array();
    
    		foreach ($arrStrings as $str) {
    			$exp = explode(",", str_replace(" ", "", $str));
    			$ornums = array_merge($ornums, $exp);
    		}
    
    		$ecount = count($ornums);
    		$s1 = $ecount.':{';
    		$s2 = $ecount.':{';
    
    		for ($i = 0; $i < $ecount; $i++) {
    			$s1 .= 'i:'.$i.';s:'.strlen($ornums[$i]).':"'.$ornums[$i].'";';
    			$s2 .= 'i:'.$i.';s:0:"";';
    		}
    
    		$s1 .= '}';
    		$s2 .= '}';
    
    		$result = $part1.$s1.$part2.$s2.$part3;
    		return $result;
    	}
    }

    Нашел в дебрях проекта. Писать php-сериализатор на php - это концептуально )))
    если кто не понял функция делает вот это:
    if (is_array($arrStrings)) {
    $ornums = explode(',', implode(',', str_replace(' ', '', $arrStrings)));
    return serialize(array("VALUE" => $ornums, "DESCRIPTION" => array_fill(0, count($ornums), '')));
    }

    Homess, 14 Февраля 2014

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

    +134

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Random random = new Random(Environment.TickCount);
    for (int i = 0; i < random.Next(380, 480); i++)
    {
            Marshal.AllocHGlobal(random.Next(0x4400, 0xd400));
            Thread.Sleep(1);
    }

    Из исходников подрядчика...
    Заказчиков надо садить на иглу правильно

    Stewie, 14 Февраля 2014

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