1. C++ / Говнокод #20466

    +7

    1. 1
    value = *((const char*)(*it).second.value);

    void* -> const char* -> char

    ptr2ptr, 04 Августа 2016

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

    +1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if (test)
    {
    _inquiryLineRepository.RequestToOrderAPI(model, idetails, true);
    
    }
    else
    {
    _inquiryLineRepository.RequestToOrderAPI(model, idetails);
    }

    индусы радуются и танцуют групповые танцы, когда видят, что подобный код пишет кто то кроме них

    and1dufresn3, 04 Августа 2016

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

    −93

    1. 1
    2. 2
    3. 3
    4. 4
    Функция ПеревестиДеньги(СчетИсточник, СчетПолучатель, Сумма)
            СнятьСоСчета(СчетИсточник, Сумма);
            ПополнитьСчет(СчетПолучатель, Сумма);
    КонецФункции

    Как написать эту функцию безопасно? Что делать, если ПополнитьСчет упадет с исключением, например?

    LispGovno, 03 Августа 2016

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

    +2

    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
    public CustomCollection<T> wherePropertyIs(String propertyName, Object value) {
    		CustomCollection<T> lstTemp = new CustomCollection <T>();
    		if (this.size() > 0) {
    			Field foundField = null;
    			for (Field f : this.get(0).getClass().getDeclaredFields()){
    				if (f.getName().equals(propertyName)){
    					foundField = f;
    					break;
    				}
    			}
    			if (foundField != null) {
    				foundField.setAccessible(true);
    				try {
    					for(T obj : this){
    						if (foundField.get(obj).equals(value)){
    							lstTemp.add(obj);
    						}
    					}
    				}catch (IllegalAccessException e){
    					System.out.println(e.getMessage());
    				}
    			}
    		}
    		return lstTemp; 
    	}

    братишка, я тебе Linq на джаве принёс

    bydlan228, 03 Августа 2016

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

    −95

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

    blMbl, 03 Августа 2016

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

    +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
    public Object [][] getResults (String query){
    		Object oArray [][] = {};
    		try (Connection con = Connector.getNewConnection()) {
    			Statement st = con.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
    			try (ResultSet rs = st.executeQuery(query)){
    				int rows = 0;
    				int cells = 0;
    				List<Object> lstObjX = new ArrayList<Object> (64);
    				while (rs.next()){
    					rows ++;
    					int x = 1;
    					while (true){
    						try {
    							lstObjX.add(rs.getObject(x));
    							x++;
    						}catch (Exception e) {
    							cells = (x != 1) ? x-1 : 0;
    							break;
    						}
    					}
    
    					for (; x-1 < cells; x++){
    						lstObjX.add(rs.getObject(x));
    					}
    
    				}
    				oArray = new Object [rows][cells];
    				int z = 0;
    				for (int y = 0; y < rows; y++){
    					for (int x = 0; x < cells; x++){
    						oArray[y][x] = lstObjX.get(z);
    						z++;
    					}
    				}
    			}
    		}
    		catch (SQLException e) {
    			System.err.println(e.getMessage());
    		}
    		return oArray;
    	}

    Превращаем Resultset в 2-мерную таблицу [y][x], где [y] - индекс строки, а [x] - индекс значений полей

    bydlan228, 03 Августа 2016

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

    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
    // Validation
    		$err = $fc->validationInput($fieldsArray, wire('input')->post);
    		if( $err === false ) {
    			// Saving
    			$fc->saveInput($fieldsArray, wire('input')->post);
    			// Send emails to the submitter and to the owner
    
    			$toSubmitter = wire('user')->email;
    			$toOwner = wire('pages')->get(wire('page')->created_users_id)->email;
    			
    		
    
    			$subject = "reservation #{$destPage->id}";
    
    			
    			ob_start(); ?>
    			
    			<p>Dear <?php echo $owner->o_firstname; ?>,</p>
    
    			<p>We have enquiry for your <?php echo $destPage->id->title; ?> in your account on site. Please log in to see details and replay to the guests directly.</p>
    			
    			<p>Here is the link: <a href="<?php echo 'http://'.$loginLink; ?>">http://<?php echo $loginLink; ?></a><p>
    
    			<p>Thank you in advance for contacting guests shortly. If you require any assistance please do not hesitate to get in touch.</p>
    
    			<p>The Team<br />
    			Lionl<br />
    			237 Perrier<br />
    			74700 <br />
    			<br />
    			Fr</p>
    			
    			<?php $textBody = ob_get_clean(); 
    			
    			$sent1 = wireMail($toSubmitter, '', $subject, '', array( 'bodyHTML' => $textBody ));
    			wireMail($toSubmitter, '', $subject, array( 'bodyHTML' => $textBody ));
    			
    			$agentMail = $fc->getInput('reservation_contact_email')->value;
    			$agentName = $fc->getInput('leader')->value;
    			$agentPhone = $fc->getInput('reservation_contact_phone')->value;
    
    			$regUser = wire('users')->find("email=$agentMail");
    			
    			
    			$destPage->of(false);

    Отправка письма

    gorbatka42, 02 Августа 2016

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

    0

    1. 1
    2. 2
    $result = call_user_func_array([ $brief, $value ? 'setOption' : 'deleteOption' ],
                                           [ $option ] + ($value ? [ 1 => $value ] : []));

    heleg, 02 Августа 2016

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

    +8

    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
    public float Ratio
    {
          get { return ratio; }
          set
          {
              float newValue = value;
    
              if (value < 0.002f)
              {
                  newValue = 0.002f;
              }
              else if (value > 0.983f)
              {
                  newValue = 0.983f;
              }
    
              if (ratio != newValue)
              {
                  ratio = value;
                  InvalidateMeasure();
              }
        }
    }

    Мой "любимый" телерик опять пишет говно. Хорошо, что я скачал исходники и теперь сам могу править баги, не дожидаясь реакции этих слоупоков, которые после отправки бага с гифом (!), воспроизводящими исходниками (!!) и, блядь, патчем (!!!) исправляли два месяца сраный NRE.
    Догадайтесь, что здесь не так. Про magic numbers уже молчу.

    kerman, 01 Августа 2016

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

    +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
    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
    struct Test
    {
    	Array<int> intArray;
    	int fixedIntArray[3];
    	bool booleanVal;
    	float flt;
    	Array<string> stringArray;
    
    	ADD_REFLECTION(Test, intArray, fixedIntArray, booleanVal, flt, stringArray);
    };
    
    struct SuperTest
    {
    	Array<string> strArr;
    	int foo;
    	string str;
    	Array<short> vals;
    	double dbl;
    	Test tests[3];
    	ushort bar;
    
    	ADD_REFLECTION(SuperTest, strArr, foo, str, vals, dbl, tests, bar);
    };
    
    int main()
    {
    	StringView structText = R"({
    		.strArr = {"str1", "ergvwr", "brt"},
    		.foo = 5,
    		.str = "gammaker",
    		.vals = {-4, 66, 432, -95},
    		.dbl = 3.1415926535897932384626433832795,
    		{
    			{
    				.fixedIntArray = {9, 4, 85},
    				.stringArray = {"test 0 A", "test 0 B", "test 0 C"},
    				.booleanVal = true,
    				.intArray = {43, 54, 36, 76},
    				.flt = 1.23456,
    				.flt = 2.34567
    			},
    			{
    				.intArray = {},
    				.fixedIntArray = {3655456, 234, 3},
    				.booleanVal = false,
    				.flt = 2.718281828,
    				.stringArray = {"test 1 A", "test 1 B"}
    			},
    			{
    				.intArray = {1531, 1253, 16, 634, 236462363},
    				.fixedIntArray = {9435, 435, 8355},
    				.booleanVal = false,
    				.flt = 123.65,
    				.stringArray = {"test 2 A", "test 2 B", "test 2 C", "test 2 D"}
    			}
    		},
    		.bar = 1025
    	})";
    
    	Data::TextDeserializer deserializer(Data::DataLanguageParams::CStructInitializer, structText);
    	SuperTest test = deserializer.Deserialize<SuperTest>();
    
    	char charBuf[5000];
    	Data::TextSerializer serializer(Data::DataLanguageParams::Json, Data::TextSerializerParams::Verbose, ArrayRange<char>(charBuf, 5000));
    	serializer.NestingLevel=-1;
    	serializer.Serialize(test);
    	Console.PrintLine(serializer.GetString());
    
    	Data::DataLanguageParams rusML;
    	rusML.RequireFieldAssignments = false;
    	rusML.AddFieldNameAfterAssignment = false;
    	rusML.LeftAssignmentOperator = "равно";
    	rusML.FieldSeparator = " следующее поле";
    	rusML.LeftFieldNameBeginQuote = null;
    	rusML.LeftFieldNameEndQuote = null;
    	rusML.RightFieldNameBeginQuote = null;
    	rusML.RightFieldNameEndQuote = null;
    	rusML.StructInstanceOpen = "начало структуры";
    	rusML.StructInstanceClose = " структура кончилась";
    	rusML.OneLineCommentBegin = "комментарий:";
    	rusML.StringQuote="\"";
    	rusML.CharQuotes = "";
    	rusML.ArrayOpen = " массив начался ";
    	rusML.ArrayClose = " кончился массив ";
    	rusML.ArrayElementSeparator = " дальше";
    	rusML.FalseTrueNames[0] = "нет";
    	rusML.FalseTrueNames[0] = "да";
    	rusML.DecimalSeparator = ',';
    
    	serializer = Data::TextSerializer(rusML, Data::TextSerializerParams::Verbose, ArrayRange<char>(charBuf, 5000));
    	serializer.NestingLevel=-1;
    	serializer.Serialize(test);
    	Console.PrintLine(serializer.GetString());
    
    	return 0;
    }

    Сделал автоматический сериализатор с кучей параметров, используя которые можно описать JSON, инициализаторы C'шных и D'шных структур, подмножество XML или какой-нибудь свой кастомный формат. Здесь показана десериализация сишного инициализатора с designated initializers, который почему-то не добавили в C++. Затем полученная структура сериализуется в JSON (его описание в моём хидере, и здесь не приведено), а затем в придуманный мной ради прикола язык разметки rusML, описание которого можно видеть в коде.

    Выводит (табы порезались):

    {
    "strArr" : ["str1", "ergvwr", "brt"],
    "foo" : 5,
    "str" : "gammaker",
    "vals" : [-4, 66, 432, -95],
    "dbl" : 3.141592653589789,
    "tests" : [
    {
    "intArray" : [43, 54, 36, 76],
    "fixedIntArray" : [9, 4, 85],
    "booleanVal" : true,
    "flt" : 2.3456699,
    "stringArray" : ["test 0 A", "test 0 B", "test 0 C"]
    },
    {
    "intArray" : [],
    "fixedIntArray" : [3655456, 234, 3],
    "booleanVal" : false,
    "flt" : 2.7182817,
    "stringArray" : ["test 1 A", "test 1 B"]
    },
    {
    "intArray" : [1531, 1253, 16, 634, 236462363],
    "fixedIntArray" : [9435, 435, 8355],
    "booleanVal" : false,
    "flt" : 123.6499938,
    "stringArray" : ["test 2 A", "test 2 B", "test 2 C", "test 2 D"]
    }
    ],
    "bar" : 1025
    }

    начало структуры
    strArr равно массив начался "str1" дальше "ergvwr" дальше "brt" кончился массив следующее поле
    foo равно 5 следующее поле
    str равно "gammaker" следующее поле
    vals равно массив начался -4 дальше 66 дальше 432 дальше -95 кончился массив следующее поле
    ...

    gammaker, 30 Июля 2016

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