1. Ruby / Говнокод #20088

    +1

    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
    module CoreExt; module Array
    
      # Check if all array members are instances of given class(es).
      #
      # @return [Boolean]
      # @param [Array, Class] klasses_allowed Array of classes, or a single class
      # @note Returns <tt>true</tt> if the array is empty.
      def is_array_of?(klasses_allowed)
        if klasses_allowed.kind_of? Array
          fail ArgumentError, "Array of Classes expected. Some members are not instances of Class." \
            unless klasses_allowed.is_array_of?(Class)
        elsif klasses_allowed.kind_of? Class
          klasses_allowed = [klasses_allowed]
        else
          fail ArgumentError, "Class or array of classes expected, #{klasses_allowed.class.name} given"
        end
        return true if self.empty?
        self.map(&:class).uniq.reject{ |klass| klasses_allowed.include?(klass) }.empty?
      end
    
    
      # @note Sums array members.
      #
      # @return [nil] If source array contains non-numeric values.
      # @return [Fixnum, Integer, Float]
      def sum
        return nil unless self.is_array_of? [Integer, Float, Fixnum]
        self.inject(0) { |sum, value| sum + value }
      end
    
    
      # Boil down values proportionally, to make their sum equal to <tt>target_sum</tt>.
      #
      # @param [Fixnum] target_sum
      # @return [Array] Array of pairs [old value, new_value].
      def reduce_to_sum(target_sum)
        current_sum = self.sum
        gap = current_sum - target_sum
        if gap < 0
          return nil
        elsif gap == 0
          return self.collect { |value| [value, value] }
        else
          reduced = 0
          result = self.collect do |value|
            x = (gap * value) / current_sum # Floats round here
            reduced += x
            [value, value - x]
          end
          # Second pass, as target sum is not reached yet due to rounding of floats
          (gap - reduced).times { |i| result[i][1] -= 1 }
          result
        end
      end
    
    end; end
    
    
    if defined? Array
      Array.class_eval do
        include CoreExt::Array
      end
    end

    https://github.com/gorodulin/assemblr/blob/master/lib/core_ext/array.rb

    cancerogen, 27 Мая 2016

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

    +1

    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
    void	Game::Loadlevel(int which){
     stealthloading=0;
    
     if(which==0)Loadlevel((char *)":Data:Maps:map1");
     else if(which==1)Loadlevel((char *)":Data:Maps:map2");
     else if(which==2)Loadlevel((char *)":Data:Maps:map3");
     // [...]
    }
    
    // [Почему (char *)? Да вот же!]
    
    void	Game::Loadlevel(char *name){
     int i,j,k,l,m;
     static int oldlevel;
     int templength;
     float lamefloat;
     int lameint;
      // [...]
    }

    Ебём const машиной Тьюринга. Всё тот же https://hg.icculus.org/icculus/lugaru/file/97b303e79826/Source/GameTick.cpp , прямо-таки сокровищница с говном.

    gost, 27 Мая 2016

    Комментарии (6)
  3. Си / Говнокод #20086

    0

    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
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    xash_force_inline size_t Q_strncat( char *dst, const char *src, size_t size )
    {
    	register const char	*pchr;
    	register const unsigned int *plongword;
    	register unsigned int *pdst;
    	register unsigned int len;
    
    	const unsigned int himagic = 0x80808080, lomagic = 0x01010101;
    
    	if( !dst || !src || !size )
    		return 0;
    
    	len = Q_strlen( dst );
    	dst += len;
    		
    
    	if( ( unsigned long int )src & ( sizeof( int ) - 1) != ( unsigned long int )dst & ( sizeof( int ) - 1) )
    		return len + Q_strncpy_unaligned( dst, src, size - len );
    
    	// first, copy all unaligned bytes
    	for( pchr = src; ( ( unsigned long int )pchr & ( sizeof( int ) - 1) ) != 0; pchr++, len++, dst++ )
    	{
    		*dst = *pchr;
    		if( len >= size )
    		{
    			*dst = '\0';
    			return len;
    		}
    		
    		if( *pchr == '\0' )
    			return len;
    	}
    
    	plongword = ( const unsigned int * ) pchr;
    	pdst = ( unsigned int * ) dst;
    
    	// plongword is aligned now, copy by 4 bytes
    	while( true )
    	{
    		register unsigned int longword = *plongword++;
    
    		// if magic check failed
    		if( ( ( longword - lomagic ) & himagic ) != 0 || (size - len < 4) )
    		{
    			const char *pchar = ( const char * )( plongword - 1 );
    			char *pchdst = ( char * )( pdst );
    			int i;
    
    
    			for( i = 0; i < 4; i++ )
    			{
    				pchdst[i] = pchar[i];
    
    				if( len + i >= size )
    				{
    					pchdst[i] = '\0';
    					return len + i;
    				}
    				if( pchar[i] == 0 )
    					return len + i;
    			}
    		}
    
    		len += sizeof( longword );
    		*pdst++ = longword;
    	}
    	return 0;
    }
    
    /*
     * sanity checker
    xash_force_inline size_t Q_strncat( char *dst, const char *src, size_t size )
    {
    	char buf1[100000], buf2[100000], r1, r2;
    	if( !dst || !src || !size )
    		return 0;
    	if( size > 99999 )
    		size = 99999;
    	strncpy( buf1, dst, size );
    	strncpy( buf2, dst, size );
    	buf1[99999] = buf2[99999] = 0;
    
    	r1 = Q_strncat_( buf1, src, size );
    	r2 = Q_strncat2( buf2, src, size );
    	if( r1 != r2 )
    		printf("DIFFERENT RESULT %d %d %d %d %s\n%s\n", r1, r2, aligned, counter, buf1, src);
    	if( strcmp( buf1, buf2 ) )
    	{
    		printf("DIFFERENT DATA %s %d %d %d %4s\n", src, size, aligned, counter, last);
    		printf("1: %s\n", buf1);
    		printf("2: %s\n", buf2);
    		
    	}
    	//strncpy( dst, buf1, size );
    	return Q_strncat2(dst, src, size);
    	
    }
    */

    Оптимизация удалась, однако при виде этого кода становится не по себе. Что можно с этим сделать?

    mittorn, 27 Мая 2016

    Комментарии (13)
  4. Pascal / Говнокод #20085

    0

    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
    //==============================================================================
    function TMainForm.RunApp(runapp : string) : bool;//Ф-ция создания процесса
      var
        si : TStartupInfo;
        pi : TProcessInformation;
      begin
        Result := false;
        try
          ZeroMemory(@si,SizeOf(si));
          si.cb := SizeOf(si);
          si.dwFlags := STARTF_USESHOWWINDOW;
          si.wShowWindow := sw_hide;
          if CreateProcess(nil,PChar(runapp),nil,nil,False,0,nil,nil,si,pi)=true then  Result := true;
             try
              CloseHandle(pi.hThread);
              except;
             end;//А вдруг прокатит?
          WaitForSingleObject(pi.hProcess, INFINITE);
          sleep(100);
          try
            CloseHandle(pi.hProcess);
            except ;
          end;
        except
          Result := false;
        end;
      end;
    //==============================================================================

    А вдруг прокатит?

    konstunn, 27 Мая 2016

    Комментарии (0)
  5. Python / Говнокод #20084

    +3

    1. 1
    s = [None for x in range(3)]

    list comprehensionы головного мозга

    splatt, 27 Мая 2016

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

    0

    1. 1
    https://github.com/KvanTTT/Cool-Compiler/blob/master/CoolCompiler/CoolCompiler.cs

    Учитесь, сопляки, как исключения перехватывать!

    dm_fomenok, 26 Мая 2016

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

    +1

    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
    Declare
    alph Varchar2(26)   := 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
    ch   Varchar2(1);
    
    Begin
        dbms_output.put_line('Starting search: ' || srch);
        For i In 1..26 Loop
            
        Select Substr(alph,i,1) Into ch From dual;
    
            with 
              v_tab_col as (
            Select '"' || c.Table_Name || '"' As Table_Name,
                   '"' || c.Column_Name || '"' As Column_Name,
                   '"' || c.Owner || '"' As Owner,
                   Row_Number() Over(Partition By c.Owner, c.Table_Name Order By c.Column_Id) As Rn
              From Dba_Tab_Columns c, Dba_Objects o
            Where Data_Type In ('CHAR', 'VARCHAR2')
               And c.Table_Name = o.Object_Name
               And o.Object_Type = 'TABLE'
               And o.Owner = c.Owner
               And o.object_name Like ch || '%' -- checking by letter

    Циклическая выборка таблиц, начинающихся на букву алфавита, в каждом следующем прогоне берется следующая.

    eggman, 26 Мая 2016

    Комментарии (33)
  8. Java / Говнокод #20081

    +5

    1. 1
    2. 2
    3. 3
    4. 4
    @Override
    public boolean isIsImpersonated() {
        return isIsImpersonated();
    }

    Геттер для isImpersonated.

    Mordavolt, 26 Мая 2016

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

    +1

    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
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НоменклатурнаяГруппа", Объект.Ссылка);
    	
    Запрос.Текст = 
    "ВЫБРАТЬ
    |	Номенклатура.Код,
    |	Номенклатура.Ссылка КАК Номенклатура
    |ИЗ
    |	Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |	Номенклатура.НоменклатурнаяГруппа.Ссылка = &НоменклатурнаяГруппа
    |
    |УПОРЯДОЧИТЬ ПО
    |	Номенклатура";
    	
    ТаблицаТоваров = Запрос.Выполнить().Выгрузить();
    
    СписокГруппы.Загрузить(ТаблицаТоваров);

    БП 3.0.43.174 (но не только), типовое заполнение формы номенклатурной группы номенклатурой.

    OdinAss, 26 Мая 2016

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

    −1

    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
    using System;
    using System.Collections.Generic;
    using System.Linq;
    
    namespace Lens.Stdlib
    {
    	/// <summary>
    	/// Standard library randomizer methods.
    	/// </summary>
    	public static class Randomizer
    	{
    		#region Fields
    
    		/// <summary>
    		/// Random seed.
    		/// </summary>
    		public static readonly Random m_Random = new Random();
    
    		#endregion
    
    		#region Methods
    
    		/// <summary>
    		/// Gets a random floating point value between 0.0 and 1.0.
    		/// </summary>
    		/// <returns></returns>
    		public static double Random()
    		{
    			return m_Random.NextDouble();
    		}
    
    		/// <summary>
    		/// Gets a random integer value between 0 and MAX.
    		/// </summary>
    		public static int Random(int max)
    		{
    			return m_Random.Next(max);
    		}
    
    		/// <summary>
    		/// Gets a random integer value between MIN and MAX.
    		/// </summary>
    		public static int Random(int min, int max)
    		{
    			return m_Random.Next(min, max);
    		}
    
    		/// <summary>
    		/// Gets a random element from the list.
    		/// </summary>
    		public static T Random<T>(IList<T> src)
    		{
    			var max = src.Count - 1;
    			return src[Random(max)];
    		}
    
    		/// <summary>
    		/// Gets a random element from the list using a weighter function.
    		/// </summary>
    		public static T Random<T>(IList<T> src, Func<T, double> weighter)
    		{
    			var rnd = m_Random.NextDouble();
    			var weight = src.Sum(weighter);
    			if (weight < 0.000001)
    				throw new ArgumentException("src");
    
    			var delta = 1.0/weight;
    			var prob = 0.0;
    			foreach (var curr in src)
    			{
    				prob += weighter(curr) * delta;
    				if (rnd <= prob)
    					return curr;
    			}
    
    			throw new ArgumentException("src");
    		}
    
    		#endregion
    	}
    }

    Ну что сказать, 3,4-Метилендиоксиамфетамин

    dm_fomenok, 26 Мая 2016

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