1. Лучший говнокод

    В номинации:
    За время:
  2. Python / Говнокод #17277

    −121

    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
    #!/usr/bin/env python
    # encoding: utf-8
    
    import os
    import sys
    
    from sets import Set
    
    class OutputSplitter(object):
        """ splitter """
        
        def __init__(self, out_splitter):
            self.__pipes=None
            if isinstance(out_splitter, OutputSplitter):
                    self.__pipes = Set(out_splitter.pipes)
            elif out_splitter:
                print out_splitter
                if type(out_splitter) == list : #
                    for pn in out_splitter:
                        self.add_pipe(pn)
                else:
                    self.add_pipe(out_splitter)
                       
        @property
        def pipes(self):
            return self.__pipes
        
        def add_pipe(self, pn):
            if isinstance(pn, basestring):
                if pn == 'stderr': x = sys.stderr
                elif pn == 'stdout': x = sys.stdout
                else: 
                    p = os.path.dirname(pn)
                    if p and not os.path.exists(p):
                        os.makedirs(p)
                    try: 
                        x = open(pn,'w+')
                    except IOError:
                        raise
                        
            else: x = pn
            
            if hasattr(x, 'write') and hasattr(x, 'flush'):
                if self.__pipes is None:
                    self.__pipes=Set()
                self.__pipes.add(x)
        
        def write(self,s):
            if self.__pipes:
                for p in self.__pipes:
                    p.write(s)
        
        def flush(self):
            if self.__pipes:
                for p in self.__pipes:
                    p.flush()
        
        #def __enter__(self):
        #    pass         
        #def __exit__(self, exc_type, exc_value, traceback):
        #    pass
    
    if __name__ == '__main__':
        cout=sys.stdout if True else sys.stderr
        o=OutputSplitter(cout)
        pass

    Испаравленная версия по монивам http://govnokod.ru/17181. Учтены замечания некого Анонимус http://govnokod.ru/17181#comment256577. Надеюсь что будут еще замечания, такие же конструктивные и полезные.

    apgurman, 08 Декабря 2014

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

    +49

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    for (int i = 0; i <= 10000; i++)
    {
    if (a[i]=='a')
    a[i] == "000";
    continue;
    }

    Цикл, который в строке a меняет все символы 'a' на три ноля. Говнолабка одногруппницы.

    b2soft, 25 Ноября 2014

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

    +57

    1. 1
    2. 2
    float factor = ((float)sizeof(char) / sizeof(wchar_t));
    fileSize = (long)((float)fileSize * factor);

    вот так выглядит деление на sizeof(wchar_t) :)

    fsmoke, 18 Ноября 2014

    Комментарии (28)
  5. JavaScript / Говнокод #17111

    +161

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    var list = [ ];
    
    // hidden elements
    list[ NaN ] = 'this-element-always-is-last'; // max index
    list[ Number.MAX_VALUE ] = 'this-is-smallest';
    list[ Infinity ] = 'this-just-infinity';
    
    // list.length == 0; // true

    Делать нечего в селе, мы сидим навеселе. Всех с пятницей!

    bot, 14 Ноября 2014

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

    +144

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    while (1) { // Не все знают логические значения
        ...
    }
    
    for (;;) // Ещё хуже
    { ... }

    nns2009, 31 Октября 2014

    Комментарии (28)
  7. JavaScript / Говнокод #16744

    +127

    1. 1
    ['10','10','10','10'].map(parseInt)

    Результат:

    [10, NaN, 2, 3]

    someone, 22 Сентября 2014

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

    +154

    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
    // Цитата №1: массив регулярных выражений из введённых пользователем строк
    var strings = what.filter(function(e){ return e.replace(/s+/g,'').length; }).map(function(e){ var re = new RegExp(e, 'g' + (ignoreCase ? 'i' : '')); return re; });
    
    // Цитата №2: проверяется наличие введённых строк в тексте и выводит результаты
    function processText(pid, cid, text){
      if(strings.every(function(re){
        return re.test(text);
      })){
      
        // совпало
        // тут выводится информация о совпадении для поста/комментария
        // кроме вывода в консоль побочных эффектов нет
        ....
        
      }
    }
    
    // Цитата №3: запуск поиска
    posts.forEach(function(post){
      processText(post.id, null, post.author.name + ' ' + post.text);
      processText(post.id, null, post.author.name + ' ' + post.description);
      post.comments.forEach(function(comment){
        processText(post.id, comment.id, comment.author.name + ' ' + comment.text);
      });
    });

    Цитаты из скрипта поиска по ГК.
    Казалось бы, write-only питушня, работает - не трогать. Но, прочитав, http://govnokod.ru/16577#comment246821, решил поискать упоминания доктора по званию. Открываю найденный пост X, а там не все упоминания найдены. Меняю список постов, в которых искать - для X меняется список найденных комментариев.
    Откуда такая питушня? processText почти чистая, strings, posts не меняется. Может, вывод на консоль как-то влияет?

    Все волосы на жопе вырвал пока нашел в чем ошибка.
    Внимание, вопрос. В чем гавно?
    (c) ursus

    1024--, 05 Сентября 2014

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

    +158

    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
    class TestThis
    {
        public $property = 'property';
    
        public function test1()
        {
            $this->this($this, new ArrayObject);
    
            $this['wierd'] = true;
    
            print_r($this);
            print_r($this->property . PHP_EOL);
    
            return $this;
        }
    
        public function test2()
        {
            print_r($this);
        }
    
        public function this(&$object, $value)
        {
            $object = $value;
        }
    }
    
    (new TestThis)->test1()->test2();

    Вопрос к самому похапе.

    Так вот нельзя:
    $this = че-нибудь

    "Cannot re-assign $this"

    А вот как выше можно!

    doo_dee_doo_dmt, 02 Сентября 2014

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

    +152

    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
    <?php
    
    class Config {
    
    /* ... */
    
    	public function __construct () 
    	{
    		// Читаем настройки из дефолтного файла
    		$ini = parse_ini_file(dirname(dirname(__FILE__)).'/'.$this->config_file);
    		// Записываем настройку как переменную класса
    		foreach($ini as $var=>$value)
    			$this->vars[$var] = $value;
    
    /* ... */

    Взято из файла api/config.php из Simpla CMS.
    Нельзя было $this->vars = parse_ini_file(dirname(dirname(__FILE__) ).'/'.$this->config_file); написать что ли?

    volter9, 29 Июля 2014

    Комментарии (28)
  11. PHP / Говнокод #16422

    +163

    1. 1
    //проверяем, не извлечены ли данные пользователя из базы. Если нет, то он не вошел, либо пароль в сессии неверный. Выводим окно для входа. Но мы не будем его выводить для вошедших, им оно уже не нужно.

    Не замысловатый комментарий из истории одного проекта

    reilag, 25 Июля 2014

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