1. Лучший говнокод

    В номинации:
    За время:
  2. 1C / Говнокод #9706

    −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
    ////////////////////////////////////////////////////////////////////
    	////////Преобразование горизонтали в вертикаль с дурацким циклом////
    	///////////////////////////////////////////////////////////////////
    	
    	ТекДата = ТекущаяДата();	
    	ТекущийГод = НачалоГода(ТекДата);
    	ТекущийМесяц = НачалоМесяца(ТекДата);
    	
    	Пока Выборка.Следующий() Цикл
    		
    		ДатаЯнварь = ТекущийГод;
    		Если    ДатаЯнварь >= ТекущийМесяц Тогда
    			Январь = ПланПост.Добавить();
    			Январь.Организация =Выборка.Организация;
    			Январь.Расход = Выборка.ПродажиЯнварь;
    			Январь.НормОст = Выборка.ОстаткиФевраль; 
    			Январь.МесяцПрихода =  ТекущийГод;
    		КонецЕсли;
    		
    		ДатаФевраль =  ДобавитьМесяц(ТекущийГод, 1);
    		Если    ДатаФевраль >= ТекущийМесяц Тогда
    			Февраль = ПланПост.Добавить();
    			Февраль.Организация =Выборка.Организация;
    			Февраль.Расход = Выборка.ПродажиФевраль;
    			Февраль.НормОст = Выборка.ОстаткиМарт;
    			Февраль.МесяцПрихода = ДатаФевраль;
    		КонецЕсли;
    		
    		ДатаМарт = ДобавитьМесяц(ТекущийГод, 2);
    		Если    ДатаМарт >= ТекущийМесяц Тогда
    			Март = ПланПост.Добавить();
    			Март.Организация =Выборка.Организация;
    			Март.Расход = Выборка.ПродажиМарт;
    			Март.НормОст = Выборка.ОстаткиАпрель;
    			Март.МесяцПрихода = ДатаМарт; 
    		КонецЕсли;
    		
    		ДатаАпрель = ДобавитьМесяц(ТекущийГод, 3);
    		Если    ДатаАпрель >= ТекущийМесяц Тогда
    			Апрель = ПланПост.Добавить();
    			Апрель.Организация =Выборка.Организация;
    			Апрель.Расход = Выборка.ПродажиАпрель;
    			Апрель.НормОст = Выборка.ОстаткиМай;
    			Апрель.МесяцПрихода =  ДатаАпрель;
    		КонецЕсли;
    		
    		ДатаМай =  ДобавитьМесяц(ТекущийГод, 4);
    		Если    ДатаМай >= ТекущийМесяц Тогда
    			Май = ПланПост.Добавить();
    			Май.Организация =Выборка.Организация;
    			Май.Расход = Выборка.ПродажиМай;
    			Май.НормОст = Выборка.ОстаткиИюнь;
    			Май.МесяцПрихода = ДатаМай;  
    		КонецЕсли;

    Была ТЧ в документе с колонками-названиями месяцев....И руководство поставило задачу вывести ЭТО в отчет...На СКД....

    Necessitudo, 19 Марта 2012

    Комментарии (10)
  3. Java / Говнокод #9702

    +142

    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
    /**
     * Конфигурация программы
     *
                 *  2 конструктора:
                    - по умолчанию - загружающий данные из файла настроек (см. Configuration.CONFIGURATION_FILENAME);
                    - с одним параметром java.util.Properties - загружающий данные данные из него.
                - метод save()
                    - без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
                    - с одним параметром java.util.Properties - записывает данные в него.
     */
    public class Configuration {
        public static final String CONFIGURATION_FILENAME = System.getProperty("user.home") + "/serialmon/1.properties";
        private PortConfig firstPort;
    	private PortConfig secondPort;
        private String logFileName;
        private int logWidth;
        
    	public Configuration() {
            this.firstPort = new PortConfig();
            this.secondPort = new PortConfig();
            
            Properties pp = new Properties();
            try {
                File PropFile = new File(CONFIGURATION_FILENAME);
                if (!PropFile.exists()) {   
                    PropFile.createNewFile();
                }
                FileInputStream inPropFile = new FileInputStream(CONFIGURATION_FILENAME); 
                pp.load(inPropFile);          
                setProperties(pp);           
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public Configuration(Properties p) {
            
            this.firstPort = new PortConfig();
            this.secondPort = new PortConfig();
            
            setProperties(p);
        }
        
        /**
         * вспомогательный метод. В идеале можно было обойтись без него, вызывая из конструктора по умолчанию
         * конструктор с параметром Properties, но ПЕРЕД вызовом этого конструктора нужно было
         * загрузить данные из файла в Properties pp, а потом уже вызвать конструктор.
         * Это сделать не возможно, т.к. вызов конструктора должен быть ПЕРВЫМ.
         * 
         * @param pp 
         */
        private void setProperties(Properties pp){
            
            this.setLogFileName(pp.getProperty("logFileName"));
            this.setLogWidth(Integer.parseInt(pp.getProperty("logWidth")));
        }
        
        /**
         * - метод save()
         * без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
         */
        public void save() {
            
            Properties pp = new Properties();
            save(pp);
            
            try {
                FileOutputStream outPropFile = new FileOutputStream(CONFIGURATION_FILENAME);
                pp.store(outPropFile, null);
                
            } catch(IOException ex) {
                ex.printStackTrace();
            }
        }
        
        /**
         *     - с одним параметром java.util.Properties - записывает данные в него.
         * 
         * @param p 
         */
        public void save(Properties p) {
            
            p.put("logFileName", this.getLogFileName());
            p.put("logWidth", String.valueOf(this.getLogWidth()));
        }

    Товарищи, возникла необходимость создания двух конструкторов. Хочется вызвать один из другого, чтобы было красиво, НО перед вызовом второго, который с параметром Properties, нужно установить этот самый параметр, а потом уже передать его.
    Т.е. нужно в конструкторе по умолчанию сделать такое:
    Properties p = new Properties();
    p.set(бла бла бла);
    THIS(P); // как вы понимаете, компилятор будет ругаться, что вызов THIS должен быть ПЕРВЫМ в конструкторе.

    вызов типа this(new Properties), не годится.

    сейчас, как можно видеть, использую вспомогательный метод setProperties, как раз без которого было бы идеально.

    kikis, 18 Марта 2012

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

    +142

    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
    using System;
    
    namespace Trening_6
    {
    	class Program
    	{
    		public static void Main(string[] args)
    		{
    			Console.WriteLine("Введите 2 числа через пробел...");
    			string[] Value = Console.ReadLine().Split(new char[] {' '});
    			int Result = 0;
    			for (int i = Convert.ToInt32(Value[0]); i < Convert.ToInt32(Value[1]) + 1; i++)
    			{
    				Result += i;
    			}
    			Console.WriteLine("Сумма всех чисел в диапозоне от {0} до {1} равна {2}", Convert.ToInt32(Value[0]), Convert.ToInt32(Value[1]), Result);
    			Console.ReadKey();
    		}
    	}
    }

    Говнище еще свежее, неделю назад высрал.

    KusokGovna, 16 Марта 2012

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

    −83

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    -(void)makeItemavAilableWithName:(NSString*) name{
        [[NSUserDefaults standardUserDefaults] setValue:@"YES" forKey:name];
    }
    
    -(BOOL)isItemAvaliableWithName:(NSString*) name{
        //item could be a chracter or a world
        return [[[NSUserDefaults standardUserDefaults] valueForKey:name]boolValue];
    }

    Вот так вот мы сохраняем булевые переменные в UserDefaults. Оригинальная орфография и пунктуация сохранены

    SevInf, 12 Марта 2012

    Комментарии (10)
  6. JavaScript / Говнокод #9631

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    LostFocus = function() {
      if (!IE) { // Этот код только для взрослых. Браузерам до 18 сюда нельзя!
          // ...
      }
    }

    Комментарий просто убил.

    DropWorld, 08 Марта 2012

    Комментарии (10)
  7. Java / Говнокод #9628

    +75

    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
    for (i = 0; i < pArgs.length; ++i) {
        if (!(pArgs[i].equalsIgnoreCase("-startable"))) {
            continue;
        }
        // ... обработка
        return true;
    }
    
    for (i = 0; i < pArgs.length; ++i) {
        if (!(pArgs[i].equalsIgnoreCase("-isRunning"))) {
            continue;
        }
        // ... обработка
        return true;
    }
    
    for (i = 0; i < pArgs.length; ++i) {
        if (!(pArgs[i].equalsIgnoreCase("-shutdown"))) {
            continue;
        }
        // ... обработка
        return true;
    }

    из main()а жаба аппликухи. и еще три таких цикла для еще трех параметров коммандной строки.

    любимая тонкость (которая сюда не попала): на ошибки коммандной строки бросается IndexOutOfBoundsException.

    ЗЫ а че в жабе нет штатного парсера коммандной строки? как-то загадочно. хотя если задуматся и вспомнить что писали жабу юниксоиды, которые сами тридцать лет толковго штатного парсера коммандной строки сделать не могли, то становится в какой-то степени даже логично.

    Dummy00001, 08 Марта 2012

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

    −85

    1. 1
    http://pastebin.com/UaTdN6K2

    А выложу ка я это тут.
    Гуано трёхлетней выдержки. Фрагментации не поддаётся. Ныне отправлено на удобрения.

    krypt, 06 Марта 2012

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

    +153

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // Проверка на взлом куков
    $sql2 = mysql_query("SELECT * FROM `gl_users` WHERE username = '".$_COOKIE['username']."' ");
    $row = mysql_fetch_assoc($sql2);
    if($_COOKIE['password'] != $row['password'] OR (isset($_COOKIE['member_id']) AND !preg_match('/^[0-9]+$/', $_COOKIE['member_id']))) {
    		setcookie('logined','0',time() +3600*24*30);
    		setcookie('member_id','',time() +3600*24*30);
    		setcookie('username','',time() +3600*24*30);
    		setcookie('password','',time() +3600*24*30);
    		 header('Location: ?');
    		die();
    }

    Слил двиг знакомого, нашел это в конце конфига *facepalm*

    dellok, 27 Февраля 2012

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

    +994

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    http://paste.org.ru/?qgrubj
    http://paste.org.ru/?r6kovp
    
    
    #define X3J11_CallFunction(WinApi,FuncHash,ModHash,...) \
    	((sizeof(WinApi(__VA_ARGS__),'~')),(X3J11_Gate<FuncHash,ModHash,boost::add_pointer<BOOST_TYPEOF(WinApi)>::type>(__VA_ARGS__)))
    
    #define X3J11_CallOverload(Signature,FuncHash,ModHash,...) \
    	((sizeof(((boost::add_pointer<Signature>::type)0)(__VA_ARGS__),'~')),(X3J11_Gate<FuncHash,ModHash,boost::add_pointer<Signature>::type>(__VA_ARGS__)))

    63F45EF45RB65R6VR, 24 Февраля 2012

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

    +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
    <?php
    //скрипт для выполнения SQL запросов
    function runQuery($str = false, $returnType='', $indexField = false, $from = false, $limit = false, $aggregate = false)
    {
    	if (!$str){ //Проверка на наличие SQL
    		return false;
    	}
    	
    	//Будем сохранять SQL запросы с результатами в cache
    	//Для этого создадим массив глобальный
    	if (!isset($GLOBALS['dbcache'])){
    		$GLOBALS['dbcache'] = array();
    	}
    	//Но использовать этот cache не будем
    	if (0 && isset($GLOBALS['dbcache'][$str])){
    		$this->cached = true;
    		return $GLOBALS['dbcache'][$str];
    	}
    	
    	//...
    	//Строки для получения данных с SQL, записываються в $retValue
    	//...
    	
    	//Вот получили результат, сохраним его в ранее заданный массив
    	if ($str != 'SELECT LAST_INSERT_ID()'){
    		$GLOBALS['dbcache'][$str] = $retValue;
    	}
    	return $retValue;
    }

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

    Edd, 17 Февраля 2012

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