1. Список говнокодов пользователя haker

    Всего: 8

  2. PHP / Говнокод #12570

    +109

    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
    public function __get($name){          
            if(isset($this->fields[$name])){            
                if(class_exists($this->fields[$name]) && 
                   strcasecmp($this->fields[$name], $this->vals[$name]['mdl']) == 0 && 
                   strcasecmp(get_parent_class($this->fields[$name]), __CLASS__) == 0){    
                    $class = $this->fields[$name];
                    $id = (string)$this->vals[$name]['id'];
                    if(!$this->refsCache[$id])
                        $this->refsCache[$id] = $class::findById($this->vals[$name]['id']);
                    return $this->refsCache[$id];
                }else                
                    return $this->vals[$name];
            }elseif(isset($this->fieldsRev[$name])) 
                return $this->vals[$name];
            else throw new Exception('Not found field "'.$name.'" when reading in model');
        }
    
        public function __set($name, $value){    
            if(isset($this->fields[$name])){  
                if(class_exists($this->fields[$name]) && 
                   strcasecmp($this->fields[$name], get_class($value)) == 0 && 
                   strcasecmp(get_parent_class($this->fields[$name]), __CLASS__) == 0)
                    $this->vals[$name] = array('id' => $value->getId(), 'mdl' => strtolower($this->fields[$name]));
                else                
                    $this->vals[$name] = $value;
            }elseif(isset($this->fieldsRev[$name])) 
                $this->vals[$name] = $value;
            else throw new Exception('Not found field "'.$name.'" when writing in model');        
        }

    Пример реализации через жопу полей для базового класс модели, с ужасным оформлением кода.

    haker, 11 Февраля 2013

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

    +88

    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
    //До рефакторинга
    static function initConnectOnce(){
        $who = get_called_class();
        if(!$GLOBALS[$who][class_cllct]){
            $db = new DataBase();
            $GLOBALS[$who][class_cllct] = $db->selectCollection(get_called_class());
        }
        return $GLOBALS[$who][class_cllct];
    }
    //После
    public static function initCollectOnce(){
        $who = get_called_class();  
        $cllct = &self::$cacheCollect[$who];
        if(!$cllct){
            $db = new DataBase();
            $cllct = $db->selectCollection($who);
        }
        return $cllct;
    }

    Недавно начал рефакторить свой же код. Нашел такой вот незаметный гавнокод...
    Для тех кто в танке =)
    1. selectCollection(get_called_class()) - зачем вызывать по второму разу, если результат уже есть в переменной $who.
    2. $GLOBALS[$who][class_cllct] - немного глюкнуло наверное, когда писал... Логичнее так $GLOBALS[class_cllct][$who].
    3. initConnectOnce - тут даже наверное не Connect должно быть, а Collect.
    4. Вместо $GLOBALS[$who][class_cllct] лучше(имхо) заюзать статичное свойство для класса.
    5. static function initConnectOnce - забыл public описать....

    haker, 11 Февраля 2013

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

    +81

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    var
          sMem: String;
    .......
    case Byte(sMem[len]) of
          Word('k'): { Что то делаем };
          Word('m'): { Что то делаем };
          Word('g'): { Что то делаем };
    end;

    Вот такой вот гавнокод

    haker, 25 Января 2013

    Комментарии (10)
  5. 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)
  6. Java / Говнокод #12326

    +68

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public Dir delete(){
            MorphiaQuery dirs = getDirList(); //Получаем подпапки
            if(dirs != null){ 
                Iterator<Dir> list = dirs.iterator();  
                while(list.hasNext()){
                    list.next().delete(); //Снова вызываем public Dir delete()
                }
            }
            return super.delete(); //Удаляем саму папку
        }

    Написал метод для удаления категорий рекурсивно из базы...
    Представляю какая нагрузка будет на базу если будет 100 папок, а в ней каждой ещё по 100. В итоге 100*100 = 10000 запросов в базу

    haker, 21 Декабря 2012

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

    +66

    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
    /**
         * 
         * check for collection object
         * @access public
         * @param string $session_path
         * @param string $session_name
         * @return boolean
         */
        public function open($session_path, $session_name)
        {
            $result = false;
            if ($this->__mongo_collection != NULL)
            {
                $result = false;
            }
            return $result;
        }

    Недавно искал класс для хранения сессий в базе данных и нашел его тут
    http://www.phpclasses.org/browse/file/34711.html (для тех кто не видит смотрим тут http://pastebin.com/xuQav8nD)
    При внимательном просмотре нашел этот кусок кода :)

    haker, 20 Июня 2012

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

    +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
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    function IntToHex(Num: Int64; Digits: Byte): String;
    type
      DataInt = Array[0..7] of Byte;
    var
      I:Byte;
      Data: ^DataInt;
    begin
      Data := @Num;
      Result := '';
      for I := Trunc(Digits/2)-1 downto 0 do begin
        if SizeOf(DataInt) < I then
          Result := Result+'00'
        else begin
          case Data^[I] of
            0: Result := Result+'00';
            1: Result := Result+'01';
            2: Result := Result+'02';  
            { ........... }
            253: Result := Result+'FD'; 
            254: Result := Result+'FE';      
            255: Result := Result+'FF';
           end;
        end;
      end;
    end;

    Давно писал функцию для перевода числа в 16-ричное представление.
    Причина - нужно было отдельную функцию без лишнего.
    Вот такой вот жестокий быдло код :))

    haker, 13 Июня 2012

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

    +71

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    $var1 = "Строка";
    $var2 = true;
    
    var_dump($var1);
    var_dump($var2);
    if($var1 != $var2){
         echo "Не равны";
    }else{
         echo "Равны";
    }

    Недавно заметил странное поведение моего кода и вот что выяснилось.
    Исправил сравнением по типу !==.
    Не думал что такая вот хрень всплывет.

    haker, 01 Мая 2012

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