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

    +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
    #include <iostream>
    using namespace std;
    
    struct T{int a;T(){cout<<"T"<<this<<endl;}~T(){cout<<"~T"<<this<<endl;}};
    struct D:public T{int b;D(){cout<<"D"<<this<<endl;}~D(){cout<<"~D"<<this<<endl;}};
    
    int main() {
       T* a = new D[2];
       cout<<"mission failure"<<endl;
       delete[] a;   
       return 0;
    }

    Писал тест специально для Тараса:
    Виртуальный деструктор в базовых классах нужен:
    *Для вызова деструкторов всех потомков. Иногда это не нужно, тк поля структуры тривиальны. Согласен с Тарасом.
    *Для правильного выбора перегруженного оператора delete. Создал одним менеджером памяти, а удалил в другой - это плохо. Но также бывает редко и только в специфичных проектах.
    Но вот то, что демонстрируется в этом примере - думаю чего-нибудь такого создатели той библиотеки, что ковырял Тарас, и опасались.
    Не просто было вызван деструктор только для предков, забыв о деструкторах потомков, но и:
    *Деструктор предков был вызван для this не по тем адресам, где расположены объекты.
    Не удивлюсь, если:
    *В некоторых кулхацкерских реализациях менеджеров памяти будет удален буфер меньшего размера и куча попортится или оставшаяся не удаленная часть массива в куче просто утекет.
    http://liveworkspace.org/code/2X3MR0$8

    LispGovno, 22 Декабря 2012

    Комментарии (48)
  2. JavaScript / Говнокод #12336

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    function postGameOrder(option) {
        // 48 cтрок кода
            if (option == 1) {
                if (!confirm("Are you sure you want to save this configuration?")) {
                    return false;
                }
            }
        // 45 строк кода
    }

    P.S. Умолчу уже о том, что среди тех 48 и 45 строк кода происходит обращение к глобальным переменным.
    На публикацию же вдохновило то, что вот это обращение к option — единственное во всей функции.

    wissenstein, 22 Декабря 2012

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

    +136

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    i = 0;
      while ((p_c = strchr(&str[i], c)) != NULL) {
        k = p_c - str;           
        for (j = 0;  j < k - i;  j++)
          putchar(' ');
        putchar('*');              
        i = k + 1;               
      }
      putchar('\n');

    очень простой способ подчеркнуть определённые символы в массиве знаков

    taburetka, 22 Декабря 2012

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

    −84

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    protected override function onLoaded() : void {
          super.onLoaded();
          var sleepComplete : Function = function () : void {
            closeWindow();
          };
          onGuest ();
          sleep.run( 1000, sleepComplete )
    }

    slavara, 21 Декабря 2012

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

    +73

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    if (jsonValues.toString().contains("acctContext") == true) {
        try {
            objectRelMethod = impl.provisionDevice(
    	jsonValues.getString("acctContext"),
    	jsonValues.getString("persoIdentityRequest"));
         }catch(JSONException e){
    	objectRelMethod = impl.provisionDevice(null, null);
         }
    }

    и туда же... и это называется гордым словом "мидл"...

    myzone, 21 Декабря 2012

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

    +81

    1. 1
    2. 2
    3. 3
    if (request.equals("") || request == null) {
        Response.status(Response.Status.NO_CONTENT).build();
    }

    ну сколько можно...

    myzone, 21 Декабря 2012

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

    +54

    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
    function bezpezdu_num($num)
    {
    	if(isset($num) && !empty($num) && is_numeric($num))
    		return true;
    	else
    		return false;
    }
    
    function pizdec($text)
    {
    	$showtext = htmlspecialchars($text);
    	exit($showtext);
    }

    $app->run_epta();

    kindofbear, 21 Декабря 2012

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

    +56

    1. 1
    2. 2
    3. 3
    4. 4
    function goto($url, $time = 0)
    {
    	exit('<META HTTP-EQUIV="REFRESH" CONTENT="'.$time.';URL='.$url.'">');
    }

    kindofbear, 21 Декабря 2012

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

    +43

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    function Podergatsya($i)
    {
    	$i++;
    	$i--;
    	return $i;
    }

    Индусская CMS

    kindofbear, 21 Декабря 2012

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

    +68

    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
    /*
        * Todo Гавнокод
        * Надо как то поуниверсальнее сделать
        * А то когда модель вмешавается в отображение, это криворукость
        */
        private static String ___recurGet(Dir dir){
            MorphiaQuery dirs = dir.getDirList();
            String  id = dir.getIdAsStr(),
                    name = dir.name;
    
            String html = "<div class=\"bottom-line\">";
            html += "<a href=\"#\" onclick=\"setPrnt('"+id+"')\" id=\""+id+"\">";
            html += name;
            html += "</a>";
            html += "<div class=\"pull-right\">";
            html += "<a href=\"#\" class=\"icon-trash\" onclick=\"deleteNode('"+id+"')\"></a>";
            html += "</div>";
            html += "</div>";
    
            if(dirs.count() < 1)
                return html;
    
            html += "<ul>";
            for(int i = 0; i < dirs.count(); i++){
                html += "<li>";
                html += ___recurGet((Dir)dirs.offset(i).first());
                html += "</li>";
            }
            html += "</ul>";
            return html;
        }
    
        public static String getTreeAsHtml(String _typ){
            MorphiaQuery dirs = getRootDirList().filter("typ",Type.valueOf(_typ));
    
            if(dirs.count() < 1)
                return "Категорий нет";
    
            String html = "<ul id=\"treeView\">";
            for(int i = 0; i < dirs.count(); i++){
                html += "<li>";
                html += ___recurGet((Dir)dirs.offset(i).first());
                html += "</li>";
            }
            html += "</ul>";
            return html;
        }

    В модели "категория" написал метод для получения дерева категории в виде html кода...
    Причем такая генерация должна происходить в view, а сделал как обычно через ж

    haker, 21 Декабря 2012

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