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

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

    +76

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    @Override
    public void setAdapter(ListAdapter adapter) {
    	if (mAdapter != null) {
    		mAdapter.unregisterDataSetObserver(mDataObserver);
    	}
    	mAdapter = adapter;
    	mAdapter.registerDataSetObserver(mDataObserver);
    }

    Дебажу говнокод доставшийся в наследство и получаю NullPointerException

    Smekalisty, 18 Февраля 2015

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

    +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
    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
    private List< String > extractMetaDataLines()
    {
       final ArrayList< String > metaDataLines = new ArrayList< String >();
       int currentLineIndex = 0;
       int start = 0;
       int end = 0;
    
       for ( final String line : getLines() )
       {
          if ( line.contains( METADATA_TAG ) )
          {
             if ( line.contains( "</" ) )
             {
                end = currentLineIndex
                      - ( getLines().get( currentLineIndex - 1 ).contains( "]]>" ) ? 1
                                                                                  : 0 );
                if ( line.contains( "<fx" )
                      || line.contains( "<mx" ) )
                {
                   start = end;
                }
                break;
             }
             if ( line.contains( "<" ) )
             {
                start = currentLineIndex
                      + ( getLines().get( currentLineIndex + 1 ).contains( "CDATA[" ) ? 2
                                                                                     : 1 );
             }
          }
          currentLineIndex++;
       }
       metaDataLines.addAll( getLines().subList( start,
                                                 end ) );
       return metaDataLines;
    }

    build.xml:413: java.lang.IllegalArgumentException: fromIndex(12) > toIndex(11)
    at java.util.ArrayList.subListRangeCheck(ArrayList.java:964)
    at java.util.ArrayList.subList(ArrayList.java:954)
    at com.adobe.ac.pmd.files.impl.MxmlFile.extractMetaDataLines(MxmlFile.java:262)
    at com.adobe.ac.pmd.files.impl.MxmlFile.copyScriptLinesKeepingOriginalLineIndices(MxmlFile.java:191)

    Адоб, как обычно, порадовал. (Это типа линт, который должен проверять мелкие ошибки / стиль). В проекте примерно 300 файлво в которых есть тег "метадата", пойди пойми на каком оно валится... Самому собрать это говно - нереально сложно изза каких-то уебищных зависимостей, конфликтов версий мейвена и т.п.

    wvxvw, 15 Февраля 2015

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

    +76

    1. 1
    2. 2
    if ( !log.append(log_line) )
    	log.append("Can't append to log");

    Безумие, оно рядом.

    Anus, 20 Января 2015

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

    +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
    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
    public  String bufer (int k) {
            String bufer = "";
            switch (k) {
                case 1:
                    for (int i = 0; i < 10; i++) {
                        if (i == 6)
                            bufer += " ";
                        bufer += Characters[random.nextInt(Characters.length)];
    
                    }
                    break;
                case 2:
                    for (int i = 0; i < 10; i++) {
                        if (i == 4 || i == 8)
                            bufer += " ";
                        bufer += Characters[random.nextInt(Characters.length)];
    
                    }
                    break;
                case 3:
                    for (int i = 0; i < 10; i++) {
                        if (i == 6)
                            bufer += "@";
                        if (i == 8)
                            bufer += ".";
                        bufer += Characters[random.nextInt(Characters.length)];
                    }
                    break;
                case 4:
                    for (int i = 0; i < 10; i++) {
                        bufer += Characters[random.nextInt(Characters.length)];
    
                    }
                    break;
    
            }
            return bufer;
        }

    Вот он, рандом, от тестировщика в selenium

    Android991, 10 Декабря 2014

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

    +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
    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
    /**
     * all object cocomponents must be not the same objects in dump - to eliminate strange situations:
     * 
     * @param copySet
     */
    private void createAllNewComplexObjects(HashMap copySet) {
    	if (copySet != null) {
    		for (Iterator i = copySet.keySet().iterator(); i.hasNext();) {
    			Object key = i.next();
    			Object o = copySet.get(key);
    			Object newObject = madeNewObect(o);
    			copySet.put(key, newObject);
    		}
    	}
    }
    
    /**
     * create new instance of the object - if it is of known type. Hashes will bethe same
     * 
     * @param oldObject
     * @return
     */
    private Object madeNewObect(Object oldObject) {
    	if (oldObject instanceof String) {
    		return new String((String) oldObject);
    	}
    	if (oldObject instanceof Point) {
    		return new Point((Point) oldObject);
    	}
    	if (oldObject instanceof Vector2D) {
    		return new Vector2D((Vector2D) oldObject);
    	}
    	if (oldObject instanceof RGBA) {
    		RGBA c = (RGBA) oldObject;
    		return new RGBA(c.getRed(), c.getGreen(), c.getBlue(), c.getAlpha());
    	}
    	if (oldObject instanceof Integer) {
    		return new Integer(((Integer) oldObject).intValue());
    	}
    	if (oldObject instanceof Double) {
    		return new Double(((Double) oldObject).doubleValue());
    	}
    	if (oldObject instanceof Boolean) {
    		return new Boolean(((Boolean) oldObject).booleanValue());
    	}
    	if (oldObject instanceof Float) {
    		return new Float(((Float) oldObject).floatValue());
    	}
    
    	if (oldObject instanceof HashMap) {
    		createAllNewComplexObjects((HashMap) oldObject);
    		return oldObject;
    	}
    
    	return oldObject;
    
    }

    В продолжение темы конструктора String(String).

    someone, 05 Декабря 2014

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

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    double C54 = ((C13!=0.4)&&(C14!=0)) ? 1 : 0;
            double C55 = ((C13==0.4)&&(C14!=0)) ? 1 : 0;
            double D56 = (C14 == 0) ? 0 : 1;
            double E56 = (C13 == 0.4) ? 1 : 0;
            double C56 = D56 * E56;
            double C57 = ((C13!=0.4)&&(C14!=0)) ? 1 : 0;
            double D58 = (C14 == 0) ? 0 : 1;
            double E58 = (C13 == 0.4) ? 1 : 0;
            double C58 = D58 * E58;
    
            if (C11 >= 670) {
                if (C12 == 3) {
                    result = C28*C11+((C54*C36*C11+C56*C34*C11)*B18+(C57*C35*C11+C58*C33*C11)*B19+C55*C37*C11)*B21;
                } else {
                    result = C28*C11+(((C54*C36*C11+C56*C34*C11)*B18+(C57*C35*C11+C58*C33*C11)*B19+C55*C37*C11)*2)*B21;
                }
            } else {
                if (C12 == 3) {
                    result = (C28-C31)*C11+((C54*C36*C11+C56*C34*C11)*B18+(C57*C35*C11+C58*C33*C11)*B19+C55*C37*C11)*B21;
                } else {
                    result = (C28-C31)*C11+(((C54*C36*C11+C56*C34*C11)*B18+(C57*C35*C11+C58*C33*C11)*B19+C55*C37*C11)*2)*B21;
                }
            }

    Часть калькулятора для рассчетов, изначально было на JS

    chsh, 27 Ноября 2014

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

    +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
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    package ololo.cdn.util;
    
    /**
     *
     */
    public interface AnswerCodes
    {
    
        public static final int CODE_OK = 0;
        public static final int CODE_NO_AUTH = 1;
        public static final int CODE_NO_ACTION_DONE = 2;
        public static final int CODE_ERROR_PARAMETERS = 4;
        public static final int CODE_NO_RIGHTS = 8;
        public static final int CODE_NOT_UNIQ_PARENT = 16;
        public static final int CODE_NOT_EXIST_COLUMNS = 32;
    
        public static final String ANSWER_NO_AUTH = "{\"result\":\"error\",\"code\":\""  + CODE_NO_AUTH + "\"}";
        public static final String ANSWER_NO_RIGHTS = "{\"result\":\"error\",\"code\":\""  + CODE_NO_RIGHTS + "\"}";
        public static final String ANSWER_NOT_UNIQ_PARENT = "{\"result\":\"error\",\"code\":\""  + CODE_NOT_UNIQ_PARENT + "\"}";
        public static final String ANSWER_NOT_EXIST_COLUMNS = "{\"result\":\"error\",\"code\":\""  + CODE_NOT_EXIST_COLUMNS + "\"}";
    
        public static final String ANSWER_OK = "{\"result\":\"ok\",\"code\":\""  + CODE_OK + "\"}";
        public static final String ANSWER_NOTHING_DONE = "{\"result\":\"ok\",\"code\":\""  + CODE_NO_ACTION_DONE + "\"}";
    }

    taras_shs, 13 Ноября 2014

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

    +76

    1. 1
    2. 2
    3. 3
    ArrayAdapter<String> alerts = new ArrayAdapter<String>(getActivity(),
    				R.layout.spinner_item, time);
    		if (alerts != null) { ... }

    andrew91, 24 Октября 2014

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

    +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
    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
    static final String MIN_INTEGER = String.valueOf(Integer.MIN_VALUE);
      static final String MAX_INTEGER = String.valueOf(Integer.MAX_VALUE);
      static final String MIN_LONG = String.valueOf(Long.MIN_VALUE);
      static final String MAX_LONG = String.valueOf(Long.MAX_VALUE);
    
      static final int NS_INTEGER = 1;
      static final int NS_LONG = 2;
    
      /**
       * Проверяет, является ли передаваемая строка строковым представлением числа типа int (long)
       * @param s строка для проверки
       * @return <code>true</code>, если строка может быть распарсена как int (ling).
       * @see Integer#parseInt
       * @see Long#parseLong
       */
      private static boolean isNumber(String s, int NUMBER_SIZE) {
        String MIN_NUMBER = "", MAX_NUMBER = "";
        switch (NUMBER_SIZE) {
          case (NS_INTEGER):
            MIN_NUMBER = MIN_INTEGER;
            MAX_NUMBER = MAX_INTEGER;
          break;
          case (NS_LONG):
            MIN_NUMBER = MIN_LONG;
            MAX_NUMBER = MAX_LONG;
          break;
        }
        if (s == null) return false;
        final int len = s.length();
        boolean negative = false;
        int pos = len > 0 && (negative = s.charAt(0) == '-') ? 1 : 0;
        if (pos == len) return false;
        while (pos < len && s.charAt(pos) == '0') pos++; //пропустим 0
        if (pos == len) return true; // там 0
        // если длина заведомо больше, то и значение по-любому выходит за пределы
        if (negative && len - pos > MIN_NUMBER.length() - 1 || len - pos > MAX_NUMBER.length()) return false;
        // нужно проверять предельные значения
        boolean needCheckRange = negative && len - pos == MIN_NUMBER.length() - 1 || len - pos == MAX_NUMBER.length();
        if (needCheckRange) {
          final String rangeString = negative ? MIN_NUMBER : MAX_NUMBER;
          for (int i = negative? 1:0; pos<len; pos++,i++) {
            final char c = s.charAt(pos);
            char r = 0;
            if (c < '0' || c > '9' ||
                (needCheckRange && c > (r = rangeString.charAt(i))) ||
                ((needCheckRange &= c == r) && false))
              return false;
          }
        } else {
          for (;pos<len;pos++) {
            final char c = s.charAt(pos);
            if (c < '0' || c > '9')
              return false;
          }
        }
        return true;
      }

    glprizes, 24 Сентября 2014

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