1. Куча / Говнокод #12548

    +130

    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
    switch(true){
        case isCondFirst():
            value = valueFirst();
            break;
        case isCondSecond():
            value = valueSecond();
            break;
        case isCondThird():
            value = valueThird();
            break;
        default:
            value = valueDefault()
    }

    Занятный баян с хабра. Предложено как замена вложенным тернарным операторам в связи с неочевидным порядком их исполнения в пхп.

    value = isCondFirst() ? valueFirst() : (isCondSecond() ? valueSecond() : (isCondThird() ? valueThird() : (valueDefault())));

    Vindicar, 07 Февраля 2013

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

    −104

    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
    Запрос = Новый Запрос;
    Запрос.Текст = "
    	|ВЫБРАТЬ
    	|	ВЫБОР Когда Ном.Ссылка.ЭтоГруппа=Истина Тогда 1 Иначе 0 Конец как этоГруппа,
    	|      1 как Уровень,
    	|	ВЫБОР Когда Ном.Ссылка.Родитель.Код=""00002"" Тогда """" Иначе Ном.Ссылка.Родитель.Код Конец как кодРодителя,
    	|	Ном.Ссылка.Код как Код,
    	|	Ном.Ссылка.Наименование как Наименование,
    	|	Ном.Ссылка как Элемент
    	|ИЗ справочник.Номенклатура как Ном";
    	РЗ = Запрос.Выполнить();
    	ТЗ = РЗ.Выгрузить();
    	
    	Сообщить("1. Подготовка таблицы ...");
    	КК=0;
    	КМАКС=ТЗ.Количество();
    	Индикатор1 = ЭлементыФормы.Индикатор;
    	Индикатор1.МаксимальноеЗначение = ТЗ.Количество();
    	Индикатор1.Значение = 0;
    	Для Каждого ТекСтрока ИЗ ТЗ Цикл
    		Индикатор1.Значение = Индикатор1.Значение + 1;
    		ОбработкаПрерыванияПользователя();
    		КК = КК + 1;
    		Состояние(Формат(КК/КМАКС*100, "ЧЦ=8; ЧДЦ=2"),Цел(КК/КМАКС*100));
    		ТекСтрока.Уровень = ТекСтрока.Элемент.Уровень()-1;
    	КонецЦикла;	
    	
    	ТЗ.Сортировать("этоГруппа убыв,Уровень возр,Наименование возр");

    Вот такой вот способ получения номенклатуры вместе с иерархией

    glavdir, 06 Февраля 2013

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

    +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
    $("#pastas").on('change', function () {
                var myString = $("#pastas").val();
                var myArray = myString.split('');
                // display the result in myDiv
                for (var i = 0; i < myArray.length; i++) {
                    if (myArray[i] == "@") {
                        skai++;
                    } else if (myArray[i] == ".") {
                        skai++;
                    }
                }
                if (skai == 2) {
                    $('#pastas').removeClass('blogai');
                    console.log('gerai');
                } else {
                    $('#pastas').addClass('blogai');
                    console.log('blogai');
                }
            });

    Валидность почты по Литовски...

    nonamez, 06 Февраля 2013

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

    +67

    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
    //разделяем даты на день, месяц, год
    $date_one=$_POST['date_one'];
    $date_two=$_POST['date_two'];
    
    $mounth_one=substr($date_one,0,2);
    $day_one=substr($date_one,3,2);
    $year_one=substr($date_one,6,4);
    $mounth_two=substr($date_two,0,2);
    $day_two=substr($date_two,3,2);
    $year_two=substr($date_two,6,4);
    //смотрит какая дата больше чтоб передать функции в правильном порядке
    if ($year_one>$year_two || ($year_one==$year_two &&$mounth_one>$mounth_two)||($year_one==$year_two&&$mounth_one==$mounth_two&&$date_one>$date_two)){
        echo 'первая дата больше<br/>';
        counting_days($date_one,$date_two);
    }else{
        echo 'вторая дата больше<br/>';
        counting_days($date_two,$date_one);
    }

    забыл что сравнить даты можно гораздо проще

    loki, 06 Февраля 2013

    Комментарии (8)
  5. Pascal / Говнокод #12544

    +106

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    for j := Low(Matrix) to High(Matrix) do begin
        Caption := 'Processing ' + IntToStr(j) + ' of ' + IntToStr(High(Matrix));
        for i := Low(Matrix[j]) to High(Matrix[j]) do begin
            SendMessage(PictureWindow, WM_MOUSEMOVE, 0, MakeLPARAM(i,j));
            S := GetCaption(TemperatureWindow);
            Matrix[j,i].V := StrToFloat(S);
        end;
    end;

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

    TarasB, 06 Февраля 2013

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

    +12

    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
    class DimensionAction : public PlmAction {
     public:
       virtual const std::type_info& type() const {
         return typeid( DimensionAction );
         }
    
      };
    
    class Object { // Где-то  в недрах иерархии...
      ...
      virtual const std::type_info& type() const = 0;
      ...
      };

    Зачем?! Почему?

    Try, 06 Февраля 2013

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

    +16

    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 EnsureThreadIsSuspended (HANDLE hThread, Thread* pThread)
    {
        STATIC_CONTRACT_NOTHROW;
        STATIC_CONTRACT_GC_NOTRIGGER;
    
        WRAPPER_CONTRACT;
    
        CONTEXT ctx;
        ctx.ContextFlags = CONTEXT_INTEGER;
        BOOL ret;
        ret = ::GetThreadContext(hThread, &ctx);
    
        return ret;
    }

    А ведь и правда, никто не гарантирует, что поток будет остановлен к тому моменту, когда SuspendThread() вернет управление...

    Ccik, 06 Февраля 2013

    Комментарии (23)
  8. JavaScript / Говнокод #12541

    +151

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    function renderLayout(layout, column, colidx, restrictions) {
            //...
            if (!colidx) {
                    var flag = 1 << 0 | 1 << 1 | layout.title.type << 3;
                    if (layout.title.split) flag |= 1 << 2;
            }
            //...
    }

    Магические преобразования... или как стать незаменимым сотрудником!

    Eugene, 05 Февраля 2013

    Комментарии (20)
  9. Си / Говнокод #12540

    +139

    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
    long __stdcall wndproc(HWND wnd, unsigned int message, WPARAM wparam, LPARAM lparam)
    {
    	switch(message)
    	{
    	case WM_USER + 100:
    		{
    			char data[128];
    			fill_data(data);
    			PostMessage(wnd, WM_USER + 666,  0, (LPARAM)data);
    			return 0;
    		}
    	case WM_USER + 666:
    		{
    			char * data = (char *)lparam;
    			use_data(data);
    			return 0;
    		}
    //etc

    Wandering of the pointer или как выжить вне стека.

    Xom94ok, 05 Февраля 2013

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

    +115

    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
    try {
    	// Store settings in the database as a JSON string
    	machine.setSettings(CustomJacksonRepresentation.createCanonicalObjectMapper().writeValueAsString(
    			request.getSettings()));
    } catch (final JsonMappingException e) {
    	// We obtained request by parsing JSON in the first place,
    	// no way it can fail to be serialized back o_O
    	throw new AssertionError(e);
    } catch (final JsonGenerationException e) {
    	// See above
    	throw new AssertionError(e);
    } catch (final IOException e) {
    	// Why does writeValueAsString throw IOException anyway? How CAN you fail to write to a String?
    	// Seriously, what were the writers of Jackson smoking that they exposed IOException in the API
    	// in a method specifically designed to serialize to String, just because the underlying implementation
    	// uses StringWriter (which doesn't really throw IOException anyway)?
    	// I mean, I understand if the string is too long to fit in memory, but that's an OutOfMemoryError
    	throw new AssertionError(e);
    }

    someone, 05 Февраля 2013

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