1. Java / Говнокод #7567

    +78

    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
    public class LoadManager
    {
        public static Integer DEFAULT_MAX_LOAD_COUNTER = 2;
    
        private ConcurrentHashMap<Class, Integer> loadCounters = new ConcurrentHashMap<Class, Integer>();
    
        public void incLoadCounter(Class clazz)
        {
            synchronized (loadCounters)
            {
                if (!loadCounters.containsKey(clazz))
                {
                    loadCounters.put(clazz, 0);
                }
    
                if (loadCounters.get(clazz) <= DEFAULT_MAX_LOAD_COUNTER)
                {
                    loadCounters.put(clazz, loadCounters.get(clazz) + 1);
                }
            }
        }
    
        public void testLoadCounterAndWait(Class clazz)
        {
            synchronized (loadCounters)
            {
                if (!loadCounters.containsKey(clazz))
                {
                    loadCounters.put(clazz, 0);
                }
            }
            
            try
            {
                while (loadCounters.get(clazz) > DEFAULT_MAX_LOAD_COUNTER)
                {                
                    Thread.sleep(3000L + (long)Math.floor(5000 * Math.random()));
                }
            }
            catch (InterruptedException e) {}        
        }
    
        public void decLoadCounter(Class clazz)
        {
            synchronized (loadCounters)
            {
                if (!loadCounters.containsKey(clazz))
                {
                    loadCounters.put(clazz, 0);
                }
    
                if (loadCounters.get(clazz) > 0)
                {
                    loadCounters.put(clazz, loadCounters.get(clazz) - 1);
                }
            }
        }
    }

    Наверное, нужно было вот это: http://download.oracle.com/javase/1,5.0/docs/api/java/util/concurrent/Semaphore.html
    Ну и ещё порадовал способ постановки потоков в "очередь".

    konsoletyper, 17 Августа 2011

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

    +147

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    Сори что сюды, но тут быстрее всего получить ответ)))
    Можете заслуженно ставить минусы.
    Как мне получить доступ к типу обьявленному и зависящему от параметров по имени переменной?
    Хочу сделать что то типа:
    const typeof(c->active)::entry * const e = c->active.GetEntry(i);
    вместо
    const structs::local_db<package, 64, type>::entry *const (на практике символов больше)
    
    взять к примеру те же итераторы.
    
    P.S больше не буду, но мне показалось это говнокодом)

    Enelar, 17 Августа 2011

    Комментарии (5)
  3. JavaScript / Говнокод #7565

    +169

    1. 1
    2. 2
    var elemID = ui.item.attr('id');
    var elemClass = $("#"+elemID).attr('class');

    Self made!

    Nemez, 17 Августа 2011

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

    −92

    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
    def clean_node(node, debug=False):
        """
            Этот пример скопипащен из книги
            "Как не должен выглядеть код"
        """
        if node['sub']:
            sub = []
            num = 1
            for item in node['sub']:
                i = clean_node(item, debug)
                if i:
                    sub.append(i)
                    num += i['num']
            node['sub'] = sub
            node['num'] = num
        else:
            node['num'] = 1
        if node['deleted']:
            if node['sub']:
                return node
        else:
            return node
    
        return None

    Мне достался в наследство большой проект, в котором порой встречается вот такое. Единственное, что радует это подобные комментарии )

    kvex, 17 Августа 2011

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

    −116

    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
    BOOL levelClosed = YES;
    if (indexPath.row == 0)
    {
    	levelClosed = NO;
    }
    else
    {
    	iPadLevelDescriptor *prevLvlDescription = [levels objectAtIndex:(indexPath.row-1)];
    	scoresObject *prevLevelScoresObject = [ScoresTableUIViewController loadScoresForLevel:[[prevLvlDescription properties] objectForKey:kiPadLevelName]];
    	if (prevLevelScoresObject != nil)
    		levelClosed = ![prevLevelScoresObject completed];
    }
    levelClosed = NO;
    [cell setClosed:lvlClosed];

    Закрыт ли уровень?..

    1101_debian, 17 Августа 2011

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

    +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
    switch (SelItemZoom.Text)
                {
                    case "25%":
                        CRVDoc.Zoom(25);
                        break;
    
                    case "50%":
                        CRVDoc.Zoom(50);
                        break;
    
                    case "75%":
                        CRVDoc.Zoom(75);
                        break;
    
                    case "100%":
                        CRVDoc.Zoom(100);
                        break;
    
                    case "125%":
                        CRVDoc.Zoom(125);
                        break;
    
                    case "150%":
                        CRVDoc.Zoom(150);
                        break;
    
                    case "175%":
                        CRVDoc.Zoom(175);
                        break;
    
                    case "200%":
                        CRVDoc.Zoom(200);
                        break;
                }

    Человек перед этим наверно прочитал про switch.

    Ky7m, 17 Августа 2011

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

    +173

    1. 1
    define('style', '<link rel="stylesheet" type="text/css" href="/style.css">');

    такого еще не встречал... o_O

    Sulik78, 17 Августа 2011

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

    +169

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    void some_func(ptrdiff_t value)
    {
      register double cos_v=cos(static_cast<double>(value));
      ptrdiff_t pt=static_cast<ptrdiff_t>(cos_v);
      {... working with pt ...}
    }

    Более того есть функция матричного умножения, элементами этих матриц являются ptrdiff_t'ы (там уже нет перевода в double при вычислениях).
    Мне одному кажется что автор наркоман?

    J0hnny, 17 Августа 2011

    Комментарии (18)
  9. Python / Говнокод #7559

    −88

    1. 1
    2. 2
    exec "a" * 300000000 + " = 'FUCKING_LONG_VARIABLE'" # Создание переменной с длиннннным именем
    exec "print " + ("a" * 300000000) # Выведет 'FUCKING_LONG_VARIABLE'

    Это был эксперимент (не повторять дома!). Хотелось узнать количество значащих символов в имени переменной, оказалось что все:).
    Первая строка кода ужирает около 270 МБ памяти.

    Niceblack, 17 Августа 2011

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

    +160

    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
    /**
    	 * Заменяет все вхождения короткого тега <param/> на длиную версию <param></param>
    	 * Заменяет все вхождения короткого тега <embed/> на длиную версию <embed></embed>
    	 * 
    	 */
    	protected function FlashParamParser($sText) {	
    		if (preg_match_all("@(<\s*param\s*name\s*=\s*\".*\"\s*value\s*=\s*\".*\")\s*/?\s*>(?!</param>)@Ui",$sText,$aMatch)) {				
    			foreach ($aMatch[1] as $key => $str) {
    				$str_new=$str.'></param>';				
    				$sText=str_replace($aMatch[0][$key],$str_new,$sText);				
    			}	
    		}
    		if (preg_match_all("@(<\s*embed\s*.*)\s*/?\s*>(?!</embed>)@Ui",$sText,$aMatch)) {				
    			foreach ($aMatch[1] as $key => $str) {
    				$str_new=$str.'></embed>';				
    				$sText=str_replace($aMatch[0][$key],$str_new,$sText);				
    			}	
    		}	
    		/**
    		 * Удаляем все <param name="wmode" value="*"></param>		 
    		 */
    		if (preg_match_all("@(<param\s.*name=\"wmode\".*>\s*</param>)@Ui",$sText,$aMatch)) {
    			foreach ($aMatch[1] as $key => $str) {
    				$sText=str_replace($aMatch[0][$key],'',$sText);
    			}
    		}
    		/**
    		 * А теперь после <object> добавляем <param name="wmode" value="opaque"></param>
    		 * Решение не фантан, но главное работает :)
    		 */
    		if (preg_match_all("@(<object\s.*>)@Ui",$sText,$aMatch)) {
    			foreach ($aMatch[1] as $key => $str) {
    				$sText=str_replace($aMatch[0][$key],$aMatch[0][$key].'<param name="wmode" value="opaque"></param>',$sText);
    			}
    		}
    		
    		return $sText;
    	}

    DrFreez, 16 Августа 2011

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