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

    +147

    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
    public class Matrix {
    
        private float matrix[][];
        private int dim;
    
        public Matrix(int dim) {
            this.dim = dim;
            this.matrix = new float[dim][dim];
        }
    
        public void productOfTwo(Matrix src, Matrix dest) {
            if (src.dim == this.dim) {
                dest.dim = this.dim;
    
                Matrix[] temp = new Matrix[this.dim];
                for (int i = 0; i < this.dim; i++) {
                    temp[i] = new Matrix(this.dim);
                }
    
                for (int i = 0; i < this.dim; i++) {
                    for (int j = 0; j < this.dim; j++) {
                        for (int k = 0; k < this.dim; k++) {
                            temp[k].matrix[i][j] = this.matrix[i][k] * src.matrix[k][j];
                        }
                    }
                }
              
                for (int i = 0; i < this.dim; i++) {
                    dest.sum(temp[i]);
                }
            } else {
                System.out.println("  An error occured: Dimensions of matrices do not match");
            }
        }
    
        public float findDet() {
            if (this.dim == 1) {
                return this.matrix[0][0];
            } else if (this.dim == 2) {
                return this.matrix[0][0] * this.matrix[1][1] - this.matrix[0][1] * this.matrix[1][0];
            } else {
                float result = 0;
                Matrix minor = new Matrix(this.dim - 1);
                for (int i = 0; i < this.dim; i++) {
                    for (int j = 1; j < this.dim; j++) {
                        System.arraycopy(this.matrix[j], 0, minor.matrix[j - 1], 0, i);
                        System.arraycopy(this.matrix[j], i + 1, minor.matrix[j - 1], i, this.dim - (i + 1));
                    }
                    result += Math.pow(-1, i) * this.matrix[0][i] * minor.findDet();
                }
                return result;
            }
        }

    Всем доброго времени суток! Прошу к Вашему вниманию алгоритм нахождения произведения двух матриц(умножаем слева направо) и нахождения детерминанта разложением по столбцу(рекурсия). Прошу оценить, по всей строгости.
    Заранее спасибо!

    kaspvar, 24 Июля 2011

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

    +90

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    @Override
    public Object clone() {
              try {
                            return super.clone();
    	        } catch (Exception e) {
    			return this;
    		}
    }

    "Клонирование"

    auf1r2, 21 Июля 2011

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

    +77

    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
    public static <T> T createInstance(String className, Object ... ctorParams)
    	{
    		Class<T> type;
    		try {
    			type = (Class <T>) Class.forName(className);
    		} 
    		catch (ClassNotFoundException e) { throw new RuntimeException(e); }
    		
    		Class <?> [] paramTypes = new Class [ctorParams.length];
    		for(int i = 0; i < ctorParams.length; i ++)
    			paramTypes[i] = (Class <?>) ctorParams[i].getClass();
    		
    		Constructor<T> ctor;
    		try {
    			ctor = type.getConstructor(paramTypes);
    		} 
    		catch (SecurityException e)    { throw new RuntimeException(e); }
    		catch (NoSuchMethodException e){ throw new RuntimeException(e); }
    		
    		T instance;
    		try {
    			instance = ctor.newInstance(ctorParams);
    		} 
    		catch (IllegalArgumentException e)  { throw new RuntimeException(e); }
    		catch (InstantiationException e)    { throw new RuntimeException(e); }
    		catch (IllegalAccessException e)    { throw new RuntimeException(e); }
    		catch (InvocationTargetException e) { throw new RuntimeException(e); }
    		
    		return instance;
    	}

    Тут само Java вынуждает говнокодить. О святая простота!

    dveyarangi, 19 Июля 2011

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

    +75

    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
    public static String ellipsizeText(String text, Context cnt) {
    		
    		int COUNT_OF_CHARACTERS_LDPI = 10;
    		int COUNT_OF_CHARACTERS_MDPI = 20;
    		int COUNT_OF_CHARACTERS_HDPI = 30;
    		
    		String ellipsizeT = "...";
    		
    		String newText = text;
    		
    		switch (cnt.getResources().getDisplayMetrics().densityDpi) {
    		case DisplayMetrics.DENSITY_LOW:
    		    if (text.length() > COUNT_OF_CHARACTERS_LDPI) {
    				newText = text.substring(0, COUNT_OF_CHARACTERS_LDPI) + ellipsizeT;
    			}
    		    break;
    		case DisplayMetrics.DENSITY_MEDIUM:
    		    if (text.length() > COUNT_OF_CHARACTERS_MDPI) {
    				newText = text.substring(0, COUNT_OF_CHARACTERS_MDPI) + ellipsizeT;
    			}
    		    break;
    		case DisplayMetrics.DENSITY_HIGH:
    		    if (text.length() > COUNT_OF_CHARACTERS_HDPI) {
    				newText = text.substring(0, COUNT_OF_CHARACTERS_HDPI) + ellipsizeT;
    			}
    		    break;
    		}
    		
    		return newText;		
    	}

    Android

    Таким нехитрым способом заменяется реализация стандартной процедуры TextView.setEllipsize(TextUtils.Truncate At.END);

    Saasha, 15 Июля 2011

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

    +129

    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
    public static String forHTML(String aText){
         final StringBuilder result = new StringBuilder();
         final StringCharacterIterator iterator = new StringCharacterIterator(aText);
         char character =  iterator.current();
         while (character != CharacterIterator.DONE ){
           if (character == '<') {
             result.append("&lt;");
           }
           else if (character == '>') {
             result.append("&gt;");
           }
           else if (character == '&') {
             result.append("&amp;");
          }
           else if (character == '\"') {
             result.append("&quot;");
           }
           else if (character == '\t') {
             addCharEntity(9, result);
           }
           else if (character == '!') {
             addCharEntity(33, result);
           }
           else if (character == '#') {
             addCharEntity(35, result);
           }
           else if (character == '$') {
             addCharEntity(36, result);
           }
    ........................................
           else if (character == '|') {
             addCharEntity(124, result);
           }
           else if (character == '}') {
             addCharEntity(125, result);
           }
           else if (character == '~') {
             addCharEntity(126, result);
           }
           else {
             //the char is not a special one
             //add it to the result as is
             result.append(character);
           }
           character = iterator.next();
         }
         return result.toString();
      }

    Escape special characters for wiseguys.
    http://www.javapractices.com/topic/TopicAction.do?Id=96

    3.14159265, 15 Июля 2011

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

    +71

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    String[] yesno = {"Y", "Yes", "N", "No"};
    
                for (int ii = 0; ii < yesno.length; ii += 2) {
                    String[] data = new String[2];
                    data[0] = yesno[ii];
                    data[1] = yesno[ii + 1];
                    Globals.yes_no.add(data);
                }

    euee, 14 Июля 2011

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

    +147

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if(!xmlDate.equals(null))
    {
    ...
    }
    else
    {
            return null;
    }

    Для полноты картинки смотрим метод equals в XMLGregorianCalendar.java. Стажеры такие стажеры...

    Art, 14 Июля 2011

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

    +78

    1. 1
    2. 2
    3. 3
    private String createJndiName(Class homeClass) {
            return "ejb/" + homeClass.getName().replace(".".charAt(0), "/".charAt(0));
    }

    no comments

    roman-kashitsyn, 12 Июля 2011

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

    +96

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public boolean isProductActionDtoListEmpty() {
            boolean noEmpty = false;
            boolean isEmpty = productActionDtoList.isEmpty();
            if(isEmpty == true){
                return isEmpty;
            }
            return noEmpty;
    }

    джуниор закомитил, плакали все :)

    Kompot, 08 Июля 2011

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

    +83

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    public final static String sqlCottOpen = new StringBuilder()
    			.append("select\n")
    			.append("rtt.object_id as rtt_id,\n")
    			.append("rtt.name as rtt_name,\n")
    			.append("stt.object_id as stt_id,\n")
    			.append("stt.name as stt_name,\n")
    			.append("(SELECT status_value.value\n")
    			// Ещё 40 строчек апендов
    			.append("      and rownum = 1) stt").toString();

    Одна из десятка констант модуль Contants.

    stokito, 08 Июля 2011

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