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

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

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    switch (blds [i])
            {
              default:
                points [0] [i] = InputGameMessage.readString ();
                break;
            }

    замечательная индусятина

    alexmelyon, 10 Января 2012

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

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    while (entityIterator.hasNext()) {
        Object[] results = entityIterator.next();
        Long policyId = ((PolicyEntity) results[0]).getId();
        PolicyEntity policy = (PolicyEntity) policyDao.findById(policyId);
        processPolicy(policy);
    }

    Спецально не рефакторил этот шедевр, ждал, пока ГК поднимется.

    roman-kashitsyn, 05 Января 2012

    Комментарии (44)
  4. Java / Говнокод #8464

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    public synchronized void add(Object obj){
    
    		if (!sequence.isEmpty()) {
    			if (sequence.size() == maxSize) {
    				sequence.remove(0);
    				sequence.add(obj);		
    			}
    			else 
    				sequence.add(obj);		
    		} 
    		
    		if (sequence.isEmpty()) 
    			sequence.add(obj);  
    		
    			
    		notifyAll();
    	}

    Альтернативный else.

    Connector, 09 Ноября 2011

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

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    StringTokenizer st = new StringTokenizer(data[0][14].toString(), ",");
    String str = "";
    //int numAfPoint = 3;
    for (int k = 1; k < st.countTokens() + 3; k++) { //p
      str = st.nextToken();
      // .. 
    }

    Оригинальный обход токенов - а вдруг тройка лишних завалялась..

    nik_lazer, 27 Октября 2011

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

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    public Date localTimeToUTC(final Date localTime) {
    	final DateFormat format = DateFormat.getDateTimeInstance();
    	format.setTimeZone(UTC);
    	
    	// This is a bit of a trick. Since Java assumes dates are in UTC,
    	// but localTime is not (blame the weird legacy database...),
    	// it's a semantically incorrect Date. Therefore we process it as
    	// if it's in UTC...
    	final String formatted = format.format(localTime);
    	
    	format.setTimeZone(localTimeZone);
    	
    	try {
    		return format.parse(formatted);
    	} catch (final ParseException e) {
    		throw new AssertionError(e); // cannot happen
    	}
    }

    И вновь издержки обратной совместимости. Китайские кулибины хранили DateTime в старой базе в локальном часовом поясе.

    lucidfox, 26 Октября 2011

    Комментарии (7)
  7. Java / Говнокод #8266

    +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
    13. 13
    14. 14
    /*
             * Для операций UPDATE идентификаторы объектов должны быть уникальными.
             */
            HashMap<Long,Boolean> filterUniqueChangeObjects = new HashMap<Long, Boolean>();
            for (RepositoryObject repositoryObject : resultRepositiry) {
    			if(repositoryObject.getOperationType()  == OperationType.UPDATE) {
    				if(filterUniqueChangeObjects.containsKey(repositoryObject.getObjectId())) {
    					log.warn("Объект с идентификатором уже присутствует в обработке UPDATE " + repositoryObject.getObjectId());
    				} else {
    					resultUniqueRepositiry.add(repositoryObject);
    					filterUniqueChangeObjects.put(repositoryObject.getObjectId(), true);
    				}
    			}
    		}

    al_open, 21 Октября 2011

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

    +78

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    // inside some method
    final DateFormat dateFormat = i18n.getDateFormat();
    synchronized (dateFormat) {
        formatedViolationDate = (violationDate != null) ?
        dateFormat.format(violationDate) : "";
    }

    i18n.getDateFormat() возвращает статический объект DateFormat, который может использоваться несколькими потоками. В руки бы накласть тому, кто это писал.
    Решение: getDateFormat() возвращает строку формата, объект формата создаем при каждом вызове.

    roman-kashitsyn, 20 Октября 2011

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

    +78

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    for (int count = 1; allWord == ""; count++) {
    	    if (num.length() == 4) { 
    		allWord += arrayToTen[Integer.parseInt(num.substring(0,1))-1] + "Thousand"; /
    		if (Integer.parseInt(num.substring(1,2)) > 0) {
    		    allWord += arrayToTen[Integer.parseInt(num.substring(1,2))-1] + "Hundred";
    		}
    		if (Integer.parseInt(num.substring(2,3)) == 0) { 
    		    allWord += "And"; // добавдяем просто "And"
    		}
    	    }
           }

    часть реализации задачи:
    http://projecteuler.net/problem=17

    s3t0fu, 29 Сентября 2011

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

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    PreparedStatement statement = createStatement();
    
    for (Value value: values) {
    
    	if (statement == null) {
    		statement = createStatement();
    	}
    
    	try {
    		if (statement.isClosed()) {
    			statement = createStatement();
    		}
    	} catch (Exception e) {
    		logger.error("...", e);
    	}
    
    	// ...
    }

    "бог любит троицу"

    user654321, 23 Сентября 2011

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

    +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
    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
    /**
    	* @param loginName
    	* @return
    	* This method is create a LoginName as Input data
    	*/
    public String getLoginName(String loginName)
    {
    	String userQuery="select u.LoginName from User u";
    	Recordset rs_user=null;
    	rs_user = CustomExternalServiceImplUtil.getInstance().executeQuery(userQuery);
    	List<String> userList = new ArrayList<String>();
    	while(rs_user.moveNext()){ 
    		userList.add(rs_user.valueFromIndex(0).toString());
    	}
    	int i=1;
    	String result = loginName;
    	for(int j=0; j < userList.size(); j++){
    		if(userList.get(j).equals(result))
    		{
    			result = loginName+i++;
    			j=0;
    		}
    	}
    	return result;
    }

    Рефаткоринг чужого кода. Минут пять втуплял, что же тут вообще делается. Еще столько же придумывал, как же это привести в божеский вид с сохранением прежней функциональности.

    askell, 06 Сентября 2011

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