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

    +2

    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
    package clojure.lang;
    
    import java.io.Serializable;
    import java.util.*;
    
    public abstract class APersistentVector extends AFn implements IPersistentVector, Iterable,
                                                                   List,
                                                                   RandomAccess, Comparable,
                                                                   Serializable, IHashEq {
    int _hash;
    int _hasheq;
    
    public String toString(){
    	return RT.printString(this);
    }
    
    public ISeq seq(){
    	if(count() > 0)
    		return new Seq(this, 0);
    	return null;
    }
    
    public ISeq rseq(){
    	if(count() > 0)
    		return new RSeq(this, count() - 1);
    	return null;
    }
    
    static boolean doEquals(IPersistentVector v, Object obj){
        if(obj instanceof IPersistentVector)
            {
            IPersistentVector ov = (IPersistentVector) obj;
            if(ov.count() != v.count())
                return false;
            for(int i = 0;i< v.count();i++)
                {
                if(!Util.equals(v.nth(i), ov.nth(i)))
                    return false;
                }
            return true;
            }
    	else if(obj instanceof List)
            {
    		Collection ma = (Collection) obj;
    		if(ma.size() != v.count() || ma.hashCode() != v.hashCode())
    			return false;
    		for(Iterator i1 = ((List) v).iterator(), i2 = ma.iterator();
    		    i1.hasNext();)
    			{
    			if(!Util.equals(i1.next(), i2.next()))
    				return false;
    			}
    		return true;
    		}
    	else
            {
    		if(!(obj instanceof Sequential))
    			return false;
    		ISeq ms = RT.seq(obj);
    		for(int i = 0; i < v.count(); i++, ms = ms.next())
    			{
    			if(ms == null || !Util.equals(v.nth(i), ms.first()))
    				return false;
    			}
    		if(ms != null)
    			return false;
    		}
    
    	return true;
    
    }

    Я решил попробовать Clojure: скачал Intellij Idea Comunity Edition поставил Cursive. Кодил значится, кодил, решил посмотре реализацию некоторых функци, начал шерстить по исходникам и дошел до джавовских исходников реализации кложура. Идея мне любезно предложила вместо декомпилированого кода скачать исходники и читать их. Я согласился и скачал, после чего увидел это. Исходное форматирование сохранено.
    Это пиздец, товарищи. Кложур как язык - очень хорош, вот прям очень. Но мне в голове не укладывается что вот эта патлатая курва https://github.com/richhickey создатель такого крутого языка, не умеет в форматирование кода. Весь репозиторий - тупо рандом. Как блять, можно делать реализацию языка и даже блять не сделать код стайл. Вы можете подумать, что это и есть код стайл. Но хер там плавал, местами есть привычное джавовское форматирование, местами куча закоментированного кода. Короче полный бардак. Вот, наслаждайтесь https://github.com/clojure/clojure

    На самом деле я не сильно то и разочарован. Да и вообще, я пытался смотреть видео с его докладами - меня просто тошнит от него. Тошнит точно так же, как от препода из универа, который вроде бы и шарит, вроде бы и что-то рассказывает, но без малейшего энтузиазма - просто поток текста, монотонный и неинтересный. У человека просто нету таланта/желания именно донести и поджечь интерес.
    За создание кложура я его уважаю. Мне просто непонятно, как человек который создал такой хороши язык, не имеет понятия код стайл. Ваши мисли?

    Lorip1971, 11 Февраля 2020

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

    −6

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    // определяем приоритет операций
         private int getPriority(char currentCharacter){
         if (Character.isLetter(currentCharacter))            return 4;
    else if (currentCharacter =='*'|| currentCharacter=='/')  return 3;
    else if (currentCharacter == '+'|| currentCharacter=='-') return 2;
    else if (currentCharacter == '(')                         return 1;
    else if (currentCharacter ==')')                          return -1;
    else                                                      return 0;
    }

    Калькулятор стажера

    kekar2, 31 Декабря 2019

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

    0

    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
    private static void createHook(MethodNode mn,
                                   String targetClassName,
                                   String hookMethodClass,
                                   String hookMethodName,
                                   Boolean printMessages)
    {
        InsnList il = new InsnList();
        LabelNode originalLabelNode = new LabelNode();
        // Object caller, param1, param2, ...
        String hookMethodDesc = "(Ljava/lang/Object;" + mn.desc.substring(1);
    
        il.add(new VarInsnNode(Opcodes.ALOAD, 0));  // this
        il.add(new MethodInsnNode(Opcodes.INVOKESTATIC,
                                  isOriginalCallClassName,
                                  isOriginalCallMethodName,
                                  isOriginalCallMethodDesc,
                                  false));
        il.add(new JumpInsnNode(Opcodes.IFNE, originalLabelNode));
    
        if (printMessages) {
            il.add(BytecodeHelper.getPrintlnSequence("patched " + mn.name + mn.desc + " called"));
        }
    
        il.add(new VarInsnNode(Opcodes.ALOAD, 0));  // this
        il.add(getParamsLoadSequence(mn.desc, 1));  // other params
        il.add(new MethodInsnNode(Opcodes.INVOKESTATIC, hookMethodClass, hookMethodName, hookMethodDesc, false));
        il.add(new InsnNode(parseReturnOpcode(hookMethodDesc)));
    
        il.add(originalLabelNode);
    
        if (printMessages) {
            il.add(BytecodeHelper.getPrintlnSequence("original " + mn.name + mn.desc + " called"));
        }
        mn.instructions.insert(il);
    }

    Бытует мнение, что «Java» — это высокозащищённый язык, в котором невозможны всяческие си-подобные грязные хаки. На самом деле, конечно, это не так: просто чтобы прострелить себе ногу в «Жабе» — надо чуть больше постараться.

    Фрагмент небольшой самописной либы, позволяющей хукать произвольные методы, прямо как в «Microsoft Detours».

    gost, 28 Декабря 2019

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

    0

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    public void setSQLMode(Connection c, String mode) throws Exception
    {     
    Statement stmt = c.createStatement();   
    String qr = "SET SESSION sql_mode = '"+mode+"';";  
    stmt.execute(qr); 
    }

    Вообще трешак че откопал.

    mozga, 12 Декабря 2019

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

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    public class C1834 { }
    class C1835 extends  C1834 { }
    
    public class C1836 {
    
       public void m5(ArrayList<? extends C1834> strList)
        {
            List<? extends C1834> list = new ArrayList<>();
            list.add(new C1835());
       }
    
    }

    АААА... кто-нибудь знает почему нельзя добавить объект С1835 в список? Как это обойти?

    mozga, 12 Декабря 2019

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

    −1

    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
    Statement stmt = null; 
    ResultSet rs = null; 
    
    try{     
    stmt = connection.createStatement();    
    ResultSet rs = stmt.executeQuery("select * from VENDORS");   
     while(rs.next())
         {
          //тело цикла....
           }
     } 
    finally
    { 
         rs.close(); stmt.close(); 
    }

    Тимлид сказал что за такое будет руки отрывать. Что тут не так?

    mozga, 12 Декабря 2019

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

    −1

    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
    // https://cdn.staticaly.com/gh/landawn/abacus-util/master/docs/MutableBoolean_view.html
    // https://github.com/landawn/abacus-util/blob/76cb7c712d4ce2d167f9170f8d92fd9857db8f99/src/main/java/com/landawn/abacus/util/MutableBoolean.java
    
    public final class MutableBoolean implements Mutable, Serializable, Comparable<MutableBoolean> {
        /**
         * Constructs a new MutableBoolean with the default value of false.
         */
        MutableBoolean() {
            super();
        }
    
        /**
         * Constructs a new MutableBoolean with the specified value.
         * 
         * @param value the initial value to store
         */
        MutableBoolean(final boolean value) {
            super();
            this.value = value;
        }
    
        /**
         *
         * @param value
         * @return
         */
        public static MutableBoolean of(final boolean value) {
            return new MutableBoolean(value);
        }
    
        /**
         *
         * @return true, if successful
         */
        public boolean value() {
            return value;
        }
    
        /**
         * Sets the value.
         * 
         * @param value the value to set
         */
        public void setValue(final boolean value) {
            this.value = value;
        }
    }

    Тут человек изменяемый булеан сделал, что думаете? Функциональное программирование уже проиграло ООП?

    Fike, 11 Декабря 2019

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

    +4

    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
    value =
                (obj instanceof ParameterAlias)
                    ? "@" + ((ParameterAlias) obj).getAlias()
                    : (obj instanceof Boolean)
                        ? BooleanUtils.toStringTrueFalse((Boolean) obj)
                        : (obj instanceof UUID)
                            ? obj.toString()
    
                            : (obj instanceof byte[])
                                ? EdmBinary.getInstance().toUriLiteral(Hex.encodeHexString((byte[]) obj))
                                : (obj instanceof Timestamp)
                                    ? timestamp((Timestamp) obj)
                                    : (obj instanceof Calendar)
                                        ? calendar((Calendar) obj)
                                        : (obj instanceof Duration)
                                            ? duration((Duration) obj)
                                            : (obj instanceof BigDecimal)
                                                ? EdmDecimal.getInstance().valueToString(obj, null, null,
                                                    Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
                                                : (obj instanceof Double)
                                                    ? EdmDouble.getInstance().valueToString(obj, null, null,
                                                        Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
                                                    : (obj instanceof Float)
                                                        ? EdmSingle.getInstance().valueToString(obj, null, null,
                                                            Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
                                                        : (obj instanceof Long)
                                                            ? EdmInt64.getInstance().valueToString(obj, null, null,
                                                                Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
                                                            : (obj instanceof Geospatial)
                                                                ? Encoder.encode(EdmPrimitiveTypeFactory.getInstance(
                                                                    ((Geospatial) obj).getEdmPrimitiveTypeKind()).
                                                                    valueToString(obj, null, null,
                                                                        Constants.DEFAULT_PRECISION,
                                                                        Constants.DEFAULT_SCALE, null))
                                                                : (obj instanceof String)
                                                                    ? quoteString((String) obj, singleQuoteEscape)
                                                                    : obj.toString();

    Петроградская тюрьма
    С поворотом лесенки.
    Мы с товарищем сидели –
    Распевали песенки

    Мистер Хэнки, 06 Декабря 2019

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

    0

    1. 1
    2. 2
    @Mock
    QueryParser queryParserMock = mock(QueryParser.class);

    Для надежности

    the-alator, 29 Ноября 2019

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

    +3

    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
    /**
         * Four state boolean.
         */
        enum Bool {
            /** */
            FALSE,
    
            /** */
            TRUE,
    
            /** */
            READY,
    
            /** */
            DONE
        }

    MAKAKA, 27 Ноября 2019

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