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

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

    +102

    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
    /// <summary>
    /// Проверка пароля *
    /// </summary>
    private string CheckPassword(String _password)
    {
        int kol = 0;
        const int LEN = 32;
        if (_password.Length == LEN)
            return _password;
        else
        {
            StringBuilder _pass = new StringBuilder(_password, LEN);
            if (_password.Length > LEN)
            {
                kol = _password.Length - LEN;
                return (_password.Substring(0, _password.Length - kol));
            }
            else
            {
                kol = LEN - _password.Length;
                int i = 0;
                while (i != kol)
                {
                    _pass.Append(" ");
                    i++;
                }
            }
            return _pass.ToString();
        }
    }

    Crazzy, 12 Декабря 2012

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

    −161

    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
    CREATE TABLE calendar
    (
      caldate date NOT NULL,
      "month" integer NOT NULL,
      month_txt character varying(10) NOT NULL,
      "year" integer NOT NULL,
      CONSTRAINT calendar_pkey PRIMARY KEY (caldate)
    )
    CREATE TABLE holiday
    (
      id numeric(10,0) NOT NULL DEFAULT nextval('holiday_seq'::regclass),
      caldate date NOT NULL,
      region integer,
      CONSTRAINT holidaypk PRIMARY KEY (id),
      CONSTRAINT fk_hday_caldate FOREIGN KEY (caldate)
          REFERENCES calendar (caldate) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION,
      CONSTRAINT holidayfk FOREIGN KEY (region)
          REFERENCES region (id) MATCH SIMPLE
          ON UPDATE NO ACTION ON DELETE NO ACTION
    )

    Вот такая вот структура база в проекте в котором я работаю.
    Причём помимо таблицы calendar и дублирование там информации, обратите внимание на таблицу holiday в эту таблицу записи ручками вносятся о выходных днях или о праздниках, как впрочем и в таблицу calendar

    smpl, 10 Декабря 2012

    Комментарии (12)
  4. JavaScript / Говнокод #12253

    +169

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if(navigator.appName == "Microsoft Internet Explorer") {
    	for(var i=0;i<$('.product_documents').length;i++)  if( ( (firstLaunch_onChangeDocs) && ($('.product_documents')[i].selectedIndex==0)) || (!firstLaunch_onChangeDocs) )
    	{
    	  document.getElementById($('.product_documents')[i].id).innerHTML = '';
    	  document.getElementById($('.product_documents')[i].id).outerHTML = document.getElementById($('.product_documents')[i].id).outerHTML.replace("</SELECT>", jsInternalDocuments + '</select>')
    	}
      } else
    	for(var i=0;i<$('.product_documents').length;i++)  if( ( (firstLaunch_onChangeDocs) && ($('.product_documents')[i].selectedIndex==0)) || (!firstLaunch_onChangeDocs) )
    	  $('.product_documents')[i].innerHTML = jsInternalDocuments;

    Очень альтернативная техника использования jquery.

    clauclauclau, 06 Декабря 2012

    Комментарии (12)
  5. PHP / Говнокод #12238

    +141

    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
    <?php
    
    function createOperator($a = [])
    {
    	$IOperator = [
    		'index' => 1,
    		'iteration' => "",
    		'f' => 'print_r($a);if(++$a["index"] < $a["count"])
    				return eval($a["iteration"]);
    			else
    				return $a["result"];',
    		'run' => 'return eval',
    	];
    	if(!empty($a))
    	{
    		$IOperator['run'] = '$a = $'.$a['title'] . '; ' . $IOperator['run'] . '($a["iteration"]);';
    		$IOperator['iteration'] = '$a = array_merge($a, ' . $a['operation'] . ');' . "\n" . $IOperator['f'];
    		$IOperator = array_merge($a, $IOperator);
    	}
    	return $IOperator;
    }
    
    $fib = createOperator([
    	'first' => 1,
    	'result' => 1,
    	'count' => 5,
    	'title' => 'fib',
    	'operation' => '["first" => $a["result"], "result" => $a["first"]+$a["result"]]'
    ]);
    echo eval($fib['run']);
    
    
    $fac = createOperator([
    	'result' => 1,
    	'count' => 5,
    	'title' => 'fac',
    	'operation' => '["result" => $a["result"]*$a["index"]]',
    ]);
    echo eval($fac['run']);

    Меня потянуло сделать какую-то фигню. Встречайте, рефлексивное программирование.

    mkusher, 02 Декабря 2012

    Комментарии (12)
  6. Куча / Говнокод #12235

    +127

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    val arr = new Array[Int](3)
    val arr2 = arr
    
    arr(0) = 100
    arr(1) = 200
    arr(2) = 300
    
    //arr2 == Array(100, 200, 300)

    Не говнокод конечно, хотя как посмотреть.

    Это нормально, учитывая, что val предполагает неизменяемость значения, или в данном случае считается, что только присвоить новое значение нельзя, а изменять внутреннюю структуру массива можно как захочешь?

    Ведь наже в C++ нельзя изменить значения const std::vector.

    Fai, 01 Декабря 2012

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

    −122

    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
    Пока Выборка1...
    ...Выборка2...
    ...
    Выборка7 = ПрименяемостьНаПрибор_ПоискВхождений(Выборка6.НомерЗаписиРСДСЕГл, НаДату).Выбрать();
    Пока Выборка7.Следующий() Цикл
    	ПрименяемостьПоВхождению = ПрименяемостьПоВхождению * Выборка7.Применяемость;
    	
    	
    	Если Выборка7.НомерЗаписиРСДСЕГл = 0 Тогда
    		// Достигнут прибор
    		Применяемость = Применяемость + ПрименяемостьПоВхождению;
    	Иначе
    		Выборка8 = ПрименяемостьНаПрибор_ПоискВхождений(Выборка7.НомерЗаписиРСДСЕГл, НаДату).Выбрать();
    		Пока Выборка8.Следующий() Цикл
    			ПрименяемостьПоВхождению = ПрименяемостьПоВхождению * Выборка8.Применяемость;
    			
    			Если Выборка8.НомерЗаписиРСДСЕГл = 0 Тогда
    				// Достигнут прибор
    				Применяемость = Применяемость + ПрименяемостьПоВхождению;
    				
    			Иначе
    				Сообщить("Превышение значения выборки... Странная ситуация, вообще не должна возникать!!!");																			
    				Сообщить("Срочно обратитесь в Отдел ВТ. Постарайтесь записать ситуацию в которой возникла эта ошибка... !!!");																			
    			КонецЕсли;
    		КонецЦикла;
    	КонецЕсли;
    КонецЦикла;
    ...
    ...

    По мотивам предыдущих постов. Все из одной конфигурации.

    Ykov89, 29 Ноября 2012

    Комментарии (12)
  8. SQL / Говнокод #12200

    −117

    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
    declare
      v_bonus_account NUMBER;
      v_MSISDN VARCHAR2(32);
      l_app NUMBER;
      v_Result NUMBER;
      v_Message VARCHAR2(2000);
      var_MSISDN VARCHAR2(32);
      v_Event VARCHAR2(32);
      v_Amount NUMBER;
      o_err VARCHAR2(2000);
    BEGIN
      /* Activate service */ 
      v_Result := wpt.bp_services.add_service
      ( i_app => v_MSISDN,
      i_srv => 400714,
      o_err => v_Message,
      to_date('30/12/2012','DD/MM/YYYY')
      );
    END;

    Локализовал код, вызывающий функцию биллинга у арабов, предложенный ими же. И который не компилится.
    В ответ получаю кучу дописок с вызовами других функций, которые ко всему этому не имеют никакого отношения.
    Как убедить пидарасов в том, что ошибки компиляции и ошибки времени исполнения - это как бы совсем разные вещи?
    А то третья неделя уже идёт...

    SadKo, 26 Ноября 2012

    Комментарии (12)
  9. bash / Говнокод #12198

    −108

    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
    # For bash and ksh, we can use faster builtin routines to do manipulation,
    # otherwise (ash) fall back to slower method using `expr'.
    # The extra level of indirection using `eval' is necessary a) for ksh, and
    # b) to get past ash.
    
    if [ "$RANDOM" != "$RANDOM" ]
    then
        math () {
            eval echo "\$(($*))"
        }
        index () {  # index string c
            eval "I=\${1%$2*}"
            eval echo "\${#I}"
        }
        ...
    else
        math () {
            expr "$@"
        }
        index () {  # index string c
            expr $1 : ".*$2" - 1
        }
        ...
    fi

    Отличный способ определения шелла из старослакварского /dev/MAKEDEV.

    bormand, 26 Ноября 2012

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

    +72

    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
    public void load()
    	{
    		for(Language lang : Language.VALUES)
    		{
    			strings.put(lang, new HashMap<String, String>());
    
    			File f = new File(Config.DATAPACK_ROOT, "data/string/strings_" + lang.getShortName() + ".properties");
    			if(!f.exists())
    			{
    				log.warn("Not find file: {}", f.getAbsolutePath());
    				continue;
    			}
    
    			LineNumberReader reader = null;
    			try
    			{
    				reader = new LineNumberReader(new FileReader(f));
    				String line = null;
    
    				while((line = reader.readLine()) != null)
    				{
    					if(line.startsWith("#"))
    						continue;
    
    					StringTokenizer token = new StringTokenizer(line, "=");
    					if(token.countTokens() < 2)
    					{
    						log.error("Error on line: " + line + "; file: " + f.getName());
    						continue;
    					}
    
    					String name = token.nextToken();
    					String value = token.nextToken();
    					while(token.hasMoreTokens())
    						value += "=" + token.nextToken();
    
    					Map<String, String> strings = this.strings.get(lang);
    
    					strings.put(name, value);
    				}
    			}
    			catch(Exception e)
    			{
    				log.error("Exception: " + e, e);
    			}
    			finally
    			{
                    try
                    {
                        reader.close();
                    }
                    catch(Exception e)
                    {
                        log.error("Cannot close reader", e);
                    }
    			}
    		}
    
    		log();
    	}

    java.util.Properties? Нет, не слышали :)

    EvSpirit, 22 Ноября 2012

    Комментарии (12)
  11. Python / Говнокод #12173

    −107

    1. 1
    type<bool> str;

    http://ideone.com/Y8TP08
    Мы с коллегой обнаружили возможность писать шаблоны на пайтоне. Первым делом написали шаблонную фабрику.

    serpinski, 22 Ноября 2012

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