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

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

    +161

    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
    public function set_debug($fparam) {
         $this->set_debug_mode($fparam);
    }
    
    protected function set_debug_mode($fparam) {
          $this->set_localization_debug_mode($fparam);
    }
    
    private function set_localization_debug_mode($fparam) {
          $this->set_localization_debug_mode_log_service($fparam);
    }
    
    private function set_localization_debug_mode_log_service($fparam) {
          $conf = //...тут уже что-то делает, наконец-то
    }

    Я понимаю, если бы они просто были алиасами... Но почему protected/private?

    Lowezar, 18 Февраля 2015

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

    +74

    1. 1
    2. 2
    3. 3
    4. 4
    /**
     * singletone staff:
     */
    private static LogisticsAppContext local;

    Однотонный посох?

    someone, 16 Февраля 2015

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

    +157

    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
    /**
    	 * @return DevblocksSearchField[]
    	 */
    	static function getFields() {
    		$translate = DevblocksPlatform::getTranslationService();
    		
    		$columns = array(
    			SearchFields_Ticket::TICKET_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_ID, 't', 'id', $translate->_('common.id'), Model_CustomField::TYPE_NUMBER),
    			SearchFields_Ticket::TICKET_MASK => new DevblocksSearchField(SearchFields_Ticket::TICKET_MASK, 't', 'mask', $translate->_('ticket.mask'), Model_CustomField::TYPE_SINGLE_LINE),
    			SearchFields_Ticket::TICKET_SUBJECT => new DevblocksSearchField(SearchFields_Ticket::TICKET_SUBJECT, 't', 'subject', $translate->_('ticket.subject'), Model_CustomField::TYPE_SINGLE_LINE),
    			
    			SearchFields_Ticket::TICKET_FIRST_MESSAGE_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_MESSAGE_ID, 't', 'first_message_id'),
    			SearchFields_Ticket::TICKET_FIRST_OUTGOING_MESSAGE_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_OUTGOING_MESSAGE_ID, 't', 'first_outgoing_message_id'),
    			SearchFields_Ticket::TICKET_LAST_MESSAGE_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_LAST_MESSAGE_ID, 't', 'last_message_id'),
    			
    			SearchFields_Ticket::TICKET_FIRST_WROTE_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_WROTE_ID, 't', 'first_wrote_address_id'),
    			SearchFields_Ticket::TICKET_FIRST_WROTE => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_WROTE, 'a1', 'email',$translate->_('ticket.first_wrote'), Model_CustomField::TYPE_SINGLE_LINE),
    			SearchFields_Ticket::TICKET_FIRST_WROTE_FIRST_NAME => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_WROTE_FIRST_NAME, 'a1', 'first_name', $translate->_('ticket.first_wrote') . ' First Name'),
    			SearchFields_Ticket::TICKET_FIRST_WROTE_LAST_NAME => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_WROTE_LAST_NAME, 'a1', 'last_name', $translate->_('ticket.first_wrote') . ' Last Name'),
    			SearchFields_Ticket::TICKET_FIRST_WROTE_SPAM => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_WROTE_SPAM, 'a1', 'num_spam',$translate->_('address.num_spam'), Model_CustomField::TYPE_NUMBER),
    			SearchFields_Ticket::TICKET_FIRST_WROTE_NONSPAM => new DevblocksSearchField(SearchFields_Ticket::TICKET_FIRST_WROTE_NONSPAM, 'a1', 'num_nonspam',$translate->_('address.num_nonspam'), Model_CustomField::TYPE_NUMBER),
    				
    			SearchFields_Ticket::TICKET_LAST_WROTE_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_LAST_WROTE_ID, 't', 'last_wrote_address_id'),
    			SearchFields_Ticket::TICKET_LAST_WROTE => new DevblocksSearchField(SearchFields_Ticket::TICKET_LAST_WROTE, 'a2', 'email',$translate->_('ticket.last_wrote'), Model_CustomField::TYPE_SINGLE_LINE),
    			SearchFields_Ticket::TICKET_LAST_WROTE_FIRST_NAME => new DevblocksSearchField(SearchFields_Ticket::TICKET_LAST_WROTE_FIRST_NAME, 'a2', 'first_name', $translate->_('ticket.last_wrote') . ' First Name'),
    			SearchFields_Ticket::TICKET_LAST_WROTE_LAST_NAME => new DevblocksSearchField(SearchFields_Ticket::TICKET_LAST_WROTE_LAST_NAME, 'a2', 'last_name', $translate->_('ticket.last_wrote') . ' Last Name'),
    				
    			SearchFields_Ticket::ORG_NAME => new DevblocksSearchField(SearchFields_Ticket::ORG_NAME, 'o', 'name', $translate->_('contact_org.name'), Model_CustomField::TYPE_SINGLE_LINE),
    			SearchFields_Ticket::REQUESTER_ADDRESS => new DevblocksSearchField(SearchFields_Ticket::REQUESTER_ADDRESS, 'ra', 'email',$translate->_('ticket.requester'), Model_CustomField::TYPE_SINGLE_LINE),
    			
    			SearchFields_Ticket::TICKET_ORG_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_ORG_ID, 't','org_id',$translate->_('contact_org.id')),
    			SearchFields_Ticket::TICKET_OWNER_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_OWNER_ID,'t','owner_id',$translate->_('common.owner'), Model_CustomField::TYPE_WORKER),
    			SearchFields_Ticket::TICKET_GROUP_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_GROUP_ID,'t','group_id',$translate->_('common.group')),
    			SearchFields_Ticket::TICKET_BUCKET_ID => new DevblocksSearchField(SearchFields_Ticket::TICKET_BUCKET_ID, 't', 'bucket_id',$translate->_('common.bucket')),
    			SearchFields_Ticket::TICKET_CREATED_DATE => new DevblocksSearchField(SearchFields_Ticket::TICKET_CREATED_DATE, 't', 'created_date',$translate->_('common.created'), Model_CustomField::TYPE_DATE),
    			SearchFields_Ticket::TICKET_UPDATED_DATE => new DevblocksSearchField(SearchFields_Ticket::TICKET_UPDATED_DATE, 't', 'updated_date',$translate->_('common.updated'), Model_CustomField::TYPE_DATE),
    			SearchFields_Ticket::TICKET_CLOSED_AT => new DevblocksSearchField(SearchFields_Ticket::TICKET_CLOSED_AT, 't', 'closed_at',$translate->_('ticket.closed_at'), Model_CustomField::TYPE_DATE),
    			SearchFields_Ticket::TICKET_WAITING => new DevblocksSearchField(SearchFields_Ticket::TICKET_WAITING, 't', 'is_waiting',$translate->_('status.waiting'), Model_CustomField::TYPE_CHECKBOX),
    			SearchFields_Ticket::TICKET_CLOSED => new DevblocksSearchField(SearchFields_Ticket::TICKET_CLOSED, 't', 'is_closed',$translate->_('status.closed'), Model_CustomField::TYPE_CHECKBOX),
    			SearchFields_Ticket::TICKET_DELETED => new DevblocksSearchField(SearchFields_Ticket::TICKET_DELETED, 't', 'is_deleted',$translate->_('status.deleted'), Model_CustomField::TYPE_CHECKBOX),

    https://github.com/jstanden/cerb6/blob/6.9.1/features/cerberusweb.core/api/dao/ticket.php#L1979

    lav45, 10 Февраля 2015

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

    +78

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    for (int i = 0; i < 100 && components.isEmpty(); i++) {
                try {
                    Thread.sleep(1000); 
                } catch (InterruptedException ie) {
                        /* shouldn't happen */
                }
                components = parent.getChildrenByObjType(type);
                LOG.debug("Iteration " + i +"components = " + components);
            }
            if (components.isEmpty()) {
                throw new RuntimeException(COMPONENT_NOT_FOUND);
            }

    зуб, что через 100 итераций со слипом в 1 секунду, коллекция components точно будет заполнена!

    edhex, 06 Февраля 2015

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

    +132

    1. 1
    .gen-tabs .acctab:hover, .gen-tabs .acctab:focus, .gen-tabs .acctab.current { Carat up! }

    Говняшечка

    elvis, 04 Февраля 2015

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

    +132

    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
    private double readDouble(string name, string wholeFile)
    {
    	try
    	{
    		int ind = -1;
    		if ((ind = wholeFile.IndexOf(name)) != -1)
    		{
    			var restofstr = wholeFile.Substring(ind + name.Length);
    			int lineendind = -1;
    			lineendind = restofstr.IndexOfAny(new char[] { '\n', '\r', (char)13, (char)10 });
    			if (lineendind == -1 && restofstr.Length > 1)
    			{
    				lineendind = restofstr.Length;
    			}
    			if (lineendind != -1)
    			{
    				int eqind = -1;
    				string valueString = restofstr.Substring(0, lineendind);
    				if ((eqind = valueString.IndexOf("=")) != -1)
    				{
    					double res = 0.0;
    					if (Double.TryParse(valueString.Substring(eqind + 1).Trim(), out res))
    					{
    						return res;
    					}
    				}
    			}
    		}
    	}
    	catch (Exception) { }
    
    	return 0.0;
    }

    А как бы вы написали это?

    tbolk, 03 Февраля 2015

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

    +137

    1. 1
    2. 2
    3. 3
    try { UserInfoProvider.DeleteUser(u.ID); }
                            catch { }
                            return "Ваш аккаунт успешно активирован";

    alexscrat, 27 Января 2015

    Комментарии (2)
  9. Java / Говнокод #17490

    +74

    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
    private static File getTmpOutputFile(VirtualFile file) {
            String origPath = file.getRealFile().getAbsolutePath();
            File tmp = new File(origPath + ".tmp");
    
            // If the temp file already exists
            if (tmp.exists()) {
                long tmpLastModified = tmp.lastModified();
                long now = System.currentTimeMillis();
    
                // If the temp file is older than the destination file, or if it is
                // older than the allowed compression time, it must be a remnant of
                // a previous server crash so we can overwrite it
                if (tmpLastModified < file.lastModified()) {
                    return tmp;
                }
                if (now - tmpLastModified > PluginConfig.maxCompressionTimeMillis) {
                    return tmp;
                }
    
                // Otherwise it must be currently being written by another thread,
                // so wait for it to finish
                while (tmp.exists()) {
                    if (System.currentTimeMillis() - now > PluginConfig.maxCompressionTimeMillis) {
                        throw new PressException("Timeout waiting for compressed file to be generated");
                    }
    
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                }
    
                // Return null to indicate that the file was already generated by
                // another thread
                return null;
            }
    
            return tmp;
        }

    Самый вредный говнокод, который я встречал за последний год.
    При определённых условиях может так случиться, что он ждёт (до 60 секунд!), пока предыдущий временный файл не исчезнет. Он не пытается его удалить, не пытается создать новый файл, ничего не логирует - он просто ждёт, пока файл сам исчезнет.

    И у меня как раз так и случилось - из-за совпадения разных событий файл не удалялся, метод ждал 60 секунд, но за это время валились совсем другие вещи по таймауту, и ушло много времени на то, чтобы понять, где же настоящая проблема.

    И весь этот геморрой можно было бы благополучно заменить всего-навсего одной сточкой:
    return File.createTempFile(origPath, "tmp");

    Исходник - плагин play-press:
    https://github.com/dirkmc/press/blob/master/app/press/io/OnDiskCompressedFile.java

    asolntsev, 21 Января 2015

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

    +157

    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
    if ( diffYear < 5 ) {
            document.getElementById('yearsText').innerHTML = "года |";
        } else if ( diffYear > 1 ){
            document.getElementById('yearsText').innerHTML = "лет |";
        } else {
            document.getElementById('yearsText').innerHTML = "год |";
        }
        
        if ( diffMonth > 4 ) {
            document.getElementById('monthText').innerHTML = "месяцев |";
        } else if ( diffMonth > 1 ){
            document.getElementById('monthText').innerHTML = "месяца |";
        } else {
            document.getElementById('monthText').innerHTML = "месяц |";
        }
        
        if ( diffDay > 5 ) {
            document.getElementById('monthText').innerHTML = "дней |";
        } else if ( diffDay > 1 ){
            document.getElementById('monthText').innerHTML = "дня |";
        } else {
            document.getElementById('monthText').innerHTML = "день |";
        }
    }

    очередная кака с датой

    artembegood, 21 Января 2015

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

    +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
    $i = 0;
            for ($k = 0; $k<=5; $k++){
                if ($i==5)
                    break;
                foreach (getContent($id) as $content_row) {
                    $i++;
                    $htmlshowcase = $content_row->getShowcase(1, $k);
                    if ($htmlshowcase == '')
                        $i--;
                    else
                        $html .= $htmlshowcase;
                    if ($i==5)
                        break;
                }
            }

    Лучший способ прохода по циклу.

    arkham_vm, 20 Января 2015

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