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

    +144

    1. 1
    Шёл 2015 год, а SQLite на ведре так и не научился сравнивать не ASCII'шные строки без учёта регистра...

    Или это у меня руки из жопы растут?

    bormand, 24 Апреля 2015

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

    +141

    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
    public static void main(String[] args)
        {
            int[] array = {1,2,3};
            permure(array, array.length);
        }
    
        private static void permure(int[] arr, int size)
        {
            if(size < 2){
                System.out.println(Arrays.toString(arr));
            }else {
                for(int k = 0; k < size; k++){
                    swap(arr, size - 1, k);
                    permure(arr, size - 1);
                }
            }
    
        }
    
        private static void swap(int[] arr, int index0, int index1)
        {
            int tmp = arr[index0];
            arr[index0] = arr[index1];
            arr[index1] = tmp;
        }

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

    Danneborg, 23 Апреля 2015

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

    +142

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    try {
    	connection.executeQuery("select to_date('" + this.getMonth() + "', 'yyyyMM') from dual", null);
    } catch (Exception e) {
    	logger.error(e.getMessage(), e);
    	Error = true;
    	fault.addError(8, 100);
    	return;
    }

    Лучший способ по проверке корректности даты

    this.getMonth() - возвращает дату из пришедшего запроса

    mrFoxs, 22 Апреля 2015

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

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    private String getNewRowKey() {
        	Hashtable<String, String> dataFields = new Hashtable<String, String>();
        	dataFields.put(TCommandConstants.TRANSITIONS_MARKET, Utils.convertMarketFrom("RUS",marketCB.getSelectedItem().toString()));
            dataFields.put( TCommandConstants.TRANSITIONS_INITIAL_STATUS, initialStatusCB.getSelectedItem().toString());
            dataFields.put( TCommandConstants.TRANSITIONS_TRANS_RULE, transitionRuleCB.getSelectedItem().toString());
            dataFields.put(TCommandConstants.TRANSITIONS_TARGET_STATUS, targetStatusCB.getSelectedItem().toString());
            return dataFields.get(TCommandConstants.TRANSITIONS_INITIAL_STATUS) + BPGraph.EMPTY_ITEM + dataFields.get(TCommandConstants.TRANSITIONS_TRANS_RULE) + BPGraph.EMPTY_ITEM + dataFields.get(TCommandConstants.TRANSITIONS_TARGET_STATUS);
        }

    grlgory, 21 Апреля 2015

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

    +84

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    public static int getNumber() {
        try {
            return 7;
        } finally {
            return 43;
        }
    }

    Оказывается так делать можно...

    Qwertiy, 14 Апреля 2015

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

    +85

    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
    private boolean isWrapper(Class<?> candidateWrapperClass) {
    
    		return candidateWrapperClass.equals(Byte.class) ? true
    				: candidateWrapperClass.equals(Boolean.class) ? true
    						: candidateWrapperClass.equals(Character.class) ? true
    								: candidateWrapperClass.equals(Short.class) ? true
    										: candidateWrapperClass
    												.equals(Integer.class) ? true
    												: candidateWrapperClass
    														.equals(Long.class) ? true
    														: candidateWrapperClass
    																.equals(Float.class) ? true
    																: candidateWrapperClass
    																		.equals(Double.class) ? true
    																		: false;
    	}

    Просто метод для проверки, является ли класс оберткой примитива.
    Отсюда https://github.com/mtedone/podam/blob/master/src/main/java/uk/co/jemos/podam/api/PodamFactoryImpl.java

    zazazazazaza, 12 Апреля 2015

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

    +77

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    val field = HttpEntityWrapper.class.getDeclaredField("wrappedEntity");
    field.setAccessible(true);
    
    HttpEntity entity = response.getEntity();
    
    while (entity instanceof HttpEntityWrapper) {
    	entity = (HttpEntity) field.get(entity);
    }
    
    log.info("Response entity class: {}", entity.getClass().getName());

    Чего только не приходится делать ради отладки...

    someone, 10 Апреля 2015

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

    +143

    1. 1
    for (val side: new boolean[] { false, true }) {

    someone, 08 Апреля 2015

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

    +80

    1. 1
    return payments.isEmpty() ? create ? store ? addPayment(serviceProvider) : createPayment(serviceProvider) : null : payments.iterator().next();

    экономим на строчках

    Lure Of Chaos, 04 Апреля 2015

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

    +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
    public void initializeMap() {
            for(Point p: getPoints()) {
               {
                    Address address = p.getAddress();
                    LatLng position = new LatLng(address.getLatitude(), address.getLongitude());
                    //... 
                } //  (2)
    
                for (Item item : items) {
                            Address address = item.getAddress();
                            LatLng position = new LatLng(address.getLatitude(), address.getLongitude());
                            //... 
                }
           }
    }

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

    lowercase, 01 Апреля 2015

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