1. JavaScript / Говнокод #17280

    +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
    var someThing = new Object({
        isVariant1: function() {
            return (this._type() == "var1") ? true : false;
        },
        isVariant2: function() {
            return (this._type() == "var2") ? true : false;
        },
        isVariant3: function() {
            return (this._type() == "var3") ? true : false;
        },
        isVariant4: function() {
            return ((this._type().indexOf("vvvar") >= 0)) ? true : false;
        }
    });

    Легаси код одного известного проекта.
    Все имена функций и содержимое строк изменены.

    pater, 09 Декабря 2014

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

    −118

    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
    from os import walk
    from time import time
    
    from abc import ABCMeta, abstractmethod
    
    class Reporter(object):
        __metaclass__=ABCMeta
        
        @abstractmethod
        def report(self, catalogs_cntr, files_ctnr, speed):
            """ output catalogs_cntr, files_ctnr, speed to somewhere """
            #pass
        
    class ConsoleIndicator(Reporter):
        def __init__(self, out_splitter):
            self.__out_splitter=out_splitter
            
        def report(self, catalogs_cntr, files_ctnr, speed):
            if self.__out_splitter and self.__out_splitter.pipes:
                _result = "\rcataloges:" + repr(catalogs_cntr).rjust(8) 
                _result += "\tfiles:" + repr(files_ctnr).rjust(13) 
                _result += "\tspeed: %12.3f"%speed + " files/s"
                
                self.__out_splitter.write(_result)
                self.__out_splitter.flush()        
                    
    class CatalogsWalker(object):
        """ """
        
        def __init__(self, catalogs, reporter=None):
            """ """
            
            self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
            self.__reporter = reporter 
            self.__catalogs = catalogs if hasattr(catalogs, "__iter__") else [catalogs]
    
            
        def __iter__(self):
            self.__files_cntr, self.__catalogs_cntr, self.__start_time, self.__speed = 0, 0, 0, 0
            self.__start_time=time()
            for catalog in self.__catalogs:
                print catalog
                for p,d,ns in walk(catalog): 
                    _ = d;
                    self.__catalogs_cntr+=1
                    for n in ns:
                        self.__files_cntr+=1
                        self.__speed=self.__files_cntr/(time()-self.__start_time)
                        if self.__reporter:
                            self.__reporter.report(self.__catalogs_cntr, self.__files_cntr, self.__speed)
                        yield p,n
                        
        @property
        def reporter(self):
            return self.__reporter
        
        @property
        def catalog_counter(self):
            return self.__catalogs_cntr    
        
        @property
        def file_counter(self):
            return self.__files_cntr
        
        @property
        def start_time(self):
            return self.__start_time
        
        @property
        def speed(self):
            return self.__speed

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

    apgurman, 08 Декабря 2014

    Комментарии (52)
  3. 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)
  4. C++ / Говнокод #17276

    +68

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    // Возвращает квадрат натурального числа
    // 4^2 = 1 + 3 + 5 + 7
    int sqr(int n) {
    	int result = 0;
    	for(int i = 1, a = 1; i <= n; i++, a = a + 2) result += a;
    	return result;
    }

    Нестандартные решения - залог успешности проекта.

    Gouvere, 08 Декабря 2014

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

    +68

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    int docTypeId1 = csResult.getDocType().getId();
    int docTypeId2 = attachment.getDocument().getId();
    if (docTypeId1 == docTypeId2) {		// здесь сравниваем типы этих документов
    ....
    }

    asmirnov, 08 Декабря 2014

    Комментарии (9)
  6. Куча / Говнокод #17274

    +132

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    <div class="lfrazrab">
        <div>
            <div class="lfra1"><span>Приёмная</span> 8(123)456-78-90</div>
            <div class="lfra2"><span>Отдел продаж</span> 8(123)456-78-90</div>
        </div>
        <div>
            <img class="daciconhd2" src="/visor.png"> 8(123)456-78-90
            <div class="vxvcdsf">г. ХХХ, ул. ХУZ 10А</div>
        </div>
    </div>

    Сдал веб сайт который делал около нескольки недель. Качество кода было ОК. Сайт видимо взялась допиливать студия http://kiweb.ru/ (т.к. в футере появилась надпись "Сделано студией kiweb.ru"). После некоторого времени меня попросили добавить функционал (за доп. плату), скопировал файлы на локальный сервер и... печаль-беда, добавили куча классов к CSS в формате ".adasadas" (может я их просто не понимаю) и кодировку файлов с отступами (пробелы вместо табов использовали :'( ) попортили.

    TL;DR – они видимо головой стучали по клавиатуре что бы создать такие "чудные" CSS классы :)

    volter9, 08 Декабря 2014

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

    +162

    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
    switch (response.statusCode) {
                                    case 200:
                                        status = "up";
                                        break;
                                    case 404:
                                        status = "up";
                                        break;
                                    case 403:
                                        status = "up";
                                        break;
                                    case 500:
                                        status = "up";
                                        break;
                                    case 200:
                                        status = "up";
                                        break;
                                    default:
                                        status = "up";
    }

    Каков ассортимент вариантов! .)

    smart, 08 Декабря 2014

    Комментарии (18)
  8. Java / Говнокод #17272

    +76

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    @Override
    public void keyPressed(KeyEvent e)
    {
        if (e.getKeyCode() == KeyEvent.VK_LEFT)
            move(-deltaX, 0);
        else if (e.getKeyCode() == KeyEvent.VK_RIGHT)
            move(deltaX, 0);
        else if (e.getKeyCode() == KeyEvent.VK_UP)
            move(0, -deltaY);
        else if (e.getKeyCode() == KeyEvent.VK_DOWN)
            move(0, deltaY);
    }

    Случайно встретил вот это на одном из сайтов, посвященных обучению джаве

    orotti, 07 Декабря 2014

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

    +49

    1. 1
    //без комментариев

    pewppy, 07 Декабря 2014

    Комментарии (35)
  10. Си / Говнокод #17270

    +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
    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
    char* xml_compose_simple_response(char* response, int code, char* description, char* additional_data)
    {
    	size_t resp_length = 0;
    	char* buff = NULL;
    
    	resp_length += strlen(RESPONSE_HEADER_PREFIX);
    	resp_length += strlen(session_type);
    	resp_length += strlen(transaction_id);
    	resp_length += strlen(response) + strlen(EMPTY_TAG);
    	if(NULL != additional_data)
    	{
    		resp_length += strlen(additional_data);
    	}
    	resp_length += strlen(description) + strlen(RESULT_INT) + sizeof(int) * 8;
    	resp_length += strlen(RESPONSE_HEADER_SUFFIX);
    
    	resp_length += 1;
    
    	if(NULL != (buff = malloc(resp_length)))
    	{
    		buff[0] = '\0';
    
    		sprintf(buff, RESPONSE_HEADER_PREFIX""EMPTY_TAG, session_type, transaction_id, response);
    
    		if (additional_data != NULL)
    		{
    			char tmp_desc[_2K];
    			sprintf(tmp_desc, description, additional_data);
    
    			sprintf(&buff[strlen(buff)], RESULT_INT, code, tmp_desc);
    		}
    		else
    		{
    			sprintf(&buff[strlen(buff)], RESULT_INT, code, description);
    		}
    		strcat(buff, RESPONSE_HEADER_SUFFIX);
    	}
    	else
    	{
    		mng_report_memory_failure_location_and_exit();
    	}
    	return buff;
    }

    XML вручную собирай @ на кавычкай падай. Никакого АПИ, только хардкор.

    codemonkey, 07 Декабря 2014

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