1. Java / Говнокод #9744

    +79

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    if ("5".equals(pid)) {
    
    } else {
    	if ("1".equals(pid) || "4".equals(pid)) {
    		type = "fl";
    	} else if ("6".equals(pid)){
    		type = "nw";
    	}else {
    		type = "ul";
    	}
    }

    Из базы формируется дерево элементов для меню. Там же есть какая-то сортировка. Меняем в базе сортировку, а все работает по-старому. Лезем копать и находим.

    akkuch, 23 Марта 2012

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

    +72

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    /**
    	 * @return node with values
    	 */
    	public FQNode getValueGetter() {
    		return data;
    	}

    accessor c повышенной энтропией, хуле

    zloizerg, 19 Марта 2012

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

    +72

    1. 1
    2. 2
    3. 3
    4. 4
    LOG.error(msg);
    Writer writer = new StringWriter();
    e.printStackTrace(new PrintWriter(writer, true));
    LOG.error(writer.toString());

    Паранойя... А вдруг LOG неправильно стэк трейс напечатает при передаче эксепшена вторым параметром.

    roman-kashitsyn, 19 Марта 2012

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

    +142

    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
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    /**
     * Конфигурация программы
     *
                 *  2 конструктора:
                    - по умолчанию - загружающий данные из файла настроек (см. Configuration.CONFIGURATION_FILENAME);
                    - с одним параметром java.util.Properties - загружающий данные данные из него.
                - метод save()
                    - без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
                    - с одним параметром java.util.Properties - записывает данные в него.
     */
    public class Configuration {
        public static final String CONFIGURATION_FILENAME = System.getProperty("user.home") + "/serialmon/1.properties";
        private PortConfig firstPort;
    	private PortConfig secondPort;
        private String logFileName;
        private int logWidth;
        
    	public Configuration() {
            this.firstPort = new PortConfig();
            this.secondPort = new PortConfig();
            
            Properties pp = new Properties();
            try {
                File PropFile = new File(CONFIGURATION_FILENAME);
                if (!PropFile.exists()) {   
                    PropFile.createNewFile();
                }
                FileInputStream inPropFile = new FileInputStream(CONFIGURATION_FILENAME); 
                pp.load(inPropFile);          
                setProperties(pp);           
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        public Configuration(Properties p) {
            
            this.firstPort = new PortConfig();
            this.secondPort = new PortConfig();
            
            setProperties(p);
        }
        
        /**
         * вспомогательный метод. В идеале можно было обойтись без него, вызывая из конструктора по умолчанию
         * конструктор с параметром Properties, но ПЕРЕД вызовом этого конструктора нужно было
         * загрузить данные из файла в Properties pp, а потом уже вызвать конструктор.
         * Это сделать не возможно, т.к. вызов конструктора должен быть ПЕРВЫМ.
         * 
         * @param pp 
         */
        private void setProperties(Properties pp){
            
            this.setLogFileName(pp.getProperty("logFileName"));
            this.setLogWidth(Integer.parseInt(pp.getProperty("logWidth")));
        }
        
        /**
         * - метод save()
         * без параметра - записывает данные в Configuration.CONFIGURATION_FILENAME
         */
        public void save() {
            
            Properties pp = new Properties();
            save(pp);
            
            try {
                FileOutputStream outPropFile = new FileOutputStream(CONFIGURATION_FILENAME);
                pp.store(outPropFile, null);
                
            } catch(IOException ex) {
                ex.printStackTrace();
            }
        }
        
        /**
         *     - с одним параметром java.util.Properties - записывает данные в него.
         * 
         * @param p 
         */
        public void save(Properties p) {
            
            p.put("logFileName", this.getLogFileName());
            p.put("logWidth", String.valueOf(this.getLogWidth()));
        }

    Товарищи, возникла необходимость создания двух конструкторов. Хочется вызвать один из другого, чтобы было красиво, НО перед вызовом второго, который с параметром Properties, нужно установить этот самый параметр, а потом уже передать его.
    Т.е. нужно в конструкторе по умолчанию сделать такое:
    Properties p = new Properties();
    p.set(бла бла бла);
    THIS(P); // как вы понимаете, компилятор будет ругаться, что вызов THIS должен быть ПЕРВЫМ в конструкторе.

    вызов типа this(new Properties), не годится.

    сейчас, как можно видеть, использую вспомогательный метод setProperties, как раз без которого было бы идеально.

    kikis, 18 Марта 2012

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

    +70

    1. 1
    2. 2
    3. 3
    class GGPoint extends Object {
    
    }

    Вспомнилась первая работа с китайцами, где юзали их базовую часть, надстройку над gwt, так вот приходилось такое встречать. Думаю этого достаточно=)

    youngkoss, 16 Марта 2012

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

    +78

    1. 1
    2. 2
    3. 3
    while(epsilon --> 0) {
         ...
    }

    dveyarangi, 14 Марта 2012

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

    +70

    1. 1
    FORMAT.format(Calendar.getInstance().getTime())

    Ну в календаре-то явно точнее время.

    roman-kashitsyn, 13 Марта 2012

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

    +74

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    private int getDSR(ViolationCache violation){
        int dsr = 0;
        for (StandardViolationCache standardViolation : violation.getStandardViolations()) {    	
            dsr = Integer.valueOf(standardViolation.getOrigPointAssignment()) > dsr ? Integer.valueOf(standardViolation.getOrigPointAssignment()) : dsr;
        }
        return dsr;
    }

    Изящненько...

    roman-kashitsyn, 13 Марта 2012

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

    +73

    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 Show extractDefault(Extract request) {
            CriteriaBuilder criteriaBuilder = converter.convertToDO(request);
            List<EntityDO> list = dao.extract(criteriaBuilder, 0, Byte.MAX_VALUE);
            if (list.size() != 8) {
                if (list.size() != 0) {
                    throw new AssertionError(list.size());
                }
                criteriaBuilder = createCriteriaBuilder();
                list = dao.extract(criteriaBuilder, 0, 100);
            }
            if (list.size() != 8) {
                throw new IllegalStateException("Entity not found");
            }
            return converter.convertToSystem(list);
        }

    Решил запостить код, который дергает сущность из базы как явный говнокод, но после повторного просмотра уже и не кажется таким уж ужасным. Разве что в extract передаются разные значения pagesize(3-ий аргумент) и list.size() сравнивается не понятно. А что скажет общественность?

    jericho, 13 Марта 2012

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

    +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
    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
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    for (Tm_RecipientConstructor recipient: m_Recipients) {
    	
    	Tm_PHB_Contact m_Contact = recipient.getContact();
    	
    	if ( m_Contact != null) {					
    		if(m_Contact.getMobile()!=null) {						
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"mobile");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getMobile());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}
    		if(m_Contact.getName()!=null) {						
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"first_name");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}
    		if(m_Contact.getSurName()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"last_name");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getSurName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}					
    		if(m_Contact.getPatrName()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"second_name");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getPatrName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}					
    		if(m_Contact.getCompanyName()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"company");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getCompanyName());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}
    		if(m_Contact.getComment()!=null) {
    			
    			st.setLong(1,recipient.getEntry().getID());//nWebEntryID
    			st.setLong(2,Tm_Registry.getInstance().getAttachementTypes().getID(En_AttachementType.ARGUMENT));//NTYPE
    			st.setString(3,"comments");//STRNAME
    			st.setLong(4,Tm_Registry.getInstance().getAttributeType().getID(En_AttributeType.STRING));//NDATATYPE
    			st.setString(5,m_Contact.getComment());//STRVALUE
    			st.addBatch();
        		index++;
        		if (index % 5000 == 0){		    				
        			st.executeBatch();
        			st.clearBatch();				            
        			st = conn.prepareStatement(sql);
        		}
    		}	
    	}
    }

    Функции? Не, не слышал.

    SadKo, 12 Марта 2012

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