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

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

    +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
    public class HoldMe implements Lock {
      public static Lock          canHas                            = maybeGetLock( );
      public static boolean       reuse                             = true;
    
      @Override
      public void lock( ) {}
    
      private static Lock maybeGetLock( ) {
        if ( reuse ) {
    //      return new ReentrantLock( );
          return new HoldMe( );
        } else {
          return new HoldMe( );
        }
      }
    
      @Override
      public void lockInterruptibly( ) throws InterruptedException {}
    
      @Override
      public Condition newCondition( ) {
        return null;
      }
    
      @Override
      public boolean tryLock( ) {
        return true;
      }
    
      @Override
      public boolean tryLock( long arg0, TimeUnit arg1 ) throws InterruptedException {
        return true;
      }
    
      @Override
      public void unlock( ) {}
    }
    
    // Пример использования:
    
    HoldMe.canHas.lock( );
    try {
      // Код
    } finally {
      HoldMe.canHas.unlock( );
    }

    Суровые калифорнийцы суровы. Впрочем, я это уже говорил.

    raorn, 28 Мая 2010

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

    +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
    List<String> runningVmIds = new ArrayList<String>( );
        for ( VmInfo runVm : request.getVms( ) ) {
          runningVmIds.add( runVm.getInstanceId( ) );
        }
        for ( String vmId : VmInstances.getInstance( ).getKeys( ) ) {
          if ( runningVmIds.contains( vmId ) ) {
            continue;
          }
          VmInstance vm = null;
          try {
            vm = VmInstances.getInstance( ).lookup( vmId );
            long splitTime = vm.getSplitTime( );
            if ( splitTime > SHUT_DOWN_TIME ) {
              VmInstances.getInstance( ).disable( vm.getName( ) );
              vm.resetStopWatch( );
              vm.setState( VmState.TERMINATED );
              vm.setReason( INSTANCE_EXPIRED );
              SystemState.cleanUp( vm );
            }
          } catch ( NoSuchElementException e ) {}
        }
        
        List<String> knownVmIds = new ArrayList<String>( );
        knownVmIds.addAll( VmInstances.getInstance( ).getKeys( ) );
        if ( knownVmIds.removeAll( runningVmIds ) ) {//<-- active registered vms not reported in describe
          for ( String vmId : knownVmIds ) {
            VmInstance vm = null;
            try {
              vm = VmInstances.getInstance( ).lookup( vmId );
              long splitTime = vm.getSplitTime( );
              if ( splitTime > SHUT_DOWN_TIME ) {
                VmInstances.getInstance( ).disable( vm.getName( ) );
                vm.resetStopWatch( );
                vm.setState( VmState.TERMINATED );
                vm.setReason( INSTANCE_EXPIRED );
                SystemState.cleanUp( vm );
              }
            } catch ( NoSuchElementException e ) {
              /* should never happen, just pulled the key set, if it does ignore it */
            }
          }
        }

    Я, наверно, тупой и ещё мало кофе с утра выпил, но мне кажется, что один из циклов тут явно лишний...

    raorn, 19 Мая 2010

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

    +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
    public void write(byte[] bytesToSend) {
            // System.out.println("Write begin.");
            try {
                socket.setSoTimeout(10000);
                packageID = 0;
                // Add bytes to send
                saveBytesToPackeges(bytesToSend);
                // Begin new Thread to be sure it was delivered
                mySendChecker = new SendChecker();
                Thread myThread = new Thread(mySendChecker);
                myThread.start();
                byte[] buf2 = new byte[50];
                // Sending number of packeges
                byte[] buf = bytesFromInt(numberOfPackages);
                for (int i = 0; i < 4; i++) {
                    buf2[i] = buf[i];
                    
                }
                packageID = -2;
                buf = packetFromBytes(buf2, sizeOfPackage - 4);
                DatagramPacket myPacket = new DatagramPacket(buf, buf.length,
                        addressToSendTo, portToSendTo);
                socket.send(myPacket);
                mySendChecker.setPacket(-2, myPacket);
                // recieve answer
                socket.receive(myPacket);
                buf = myPacket.getData();
                  mySendChecker.removePacket(-2);
                // send delieverer
                buf = packetFromBytes(buf2, sizeOfPackage - 4);
                socket.send(myPacket);
                // starting to send data
                for (int i = 0; i < numberOfPackages; i++) {
                    myPacket = new DatagramPacket(bytesToSendSave[i],
                            bytesToSendSave[i].length, addressToSendTo,
                            portToSendTo);
                    socket.send(myPacket);
                    mySendChecker.setPacket(i, myPacket);
                }
                // start to recieve answers
                int numberOfPackegeRecieved = 0;
                while (true) {
                    buf = new byte[8];
                    if (mySendChecker.isEmpty()) {
                        break;
                        
                    }
                    myPacket = new DatagramPacket(buf, buf.length);
                    socket.receive(myPacket);
                    buf = myPacket.getData();
                    numberOfPackegeRecieved = intFromBytes(buf, 4);
                    if (-3 != intFromBytes(buf, 4)) {
                        continue;
                        
                    }
                    numberOfPackegeRecieved = intFromBytes(buf, 0);
                    mySendChecker.removePacket(numberOfPackegeRecieved);
                    myPacket = new DatagramPacket(buf, buf.length, addressToSendTo,
                            portToSendTo);
                    socket.send(myPacket);
                }
                buf = bytesFromInt(-5);
                myPacket = new DatagramPacket(buf, buf.length, addressToSendTo,
                        portToSendTo);
                socket.send(myPacket);
                mySendChecker.setPacket(-5, myPacket);
                // System.out.println("WRITE Sending -5");
                while (true) {
                    buf = new byte[4];
                    myPacket = new DatagramPacket(buf, buf.length);
                    socket.receive(myPacket);
                    buf = myPacket.getData();
                    if (-5 == intFromBytes(buf, 0)) {
                        // System.out.println("WRITE recieved -5");
                        break;
                    }
                }
                mySendChecker.end();
                
                socket.setSoTimeout(100);
                while (true) {
                    try {
                        socket.receive(myPacket);
                    } catch (SocketTimeoutException e) {
                        break;
                    }
                }
                socket.setSoTimeout(0);
                // System.out.println("Write end.");
                ... TO BE CONTINUED ...

    Лучшая реализация потокового протокола поверх UDP среди студентов. Остальное в таком же стиле.

    rootman, 14 Мая 2010

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

    +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
    lstCmsObject = OpenCms.getOrgUnitManager().getGroups(obj, "/", true);
                                
                                for (int i = 0; i < lstCmsObject.size(); i++)
                                {
                                	lstUnits.add(new Units(lstCmsObject.get(i).getDisplayName(obj, Locale.US).replaceAll("Users from ","").replaceAll("[a-zA-Z]*","").replaceAll("[(/)]+",""),lstCmsObject.get(i).getOuFqn()));
                                }
                                
                                for (int i = 0; i < lstCmsObject.size(); i++) {
    		                for (int j = 0; j < lstCmsObject.size(); j++) {
    		                    if (lstUnits.get(i).GetName().compareTo(lstUnits.get(j).GetName())<0) {
    		                        Collections.swap(lstUnits, i, j);
    		                    }
    		                }
    		            }

    des-1008d, 30 Марта 2010

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

    +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
    StringBuffer sql = new StringBuffer();
            sql.append("INSERT INTO ");
            sql.append("    APPLIED_TABLE ");
            sql.append(" ( ");
            sql.append("    PROJECT_ID, ");
            sql.append("    APPLIED_ID, ");
            sql.append("    APPLIED_DAY, ");
            sql.append("    USER_ID, ");
            sql.append("    APPLIED_NAME, ");
            sql.append("    APPLIED_LIMIT, ");
            sql.append("    APPLIED_COMMENT, ");
            sql.append("    CATEGORY_ID, ");
            sql.append("    DB_ID, ");
            sql.append("    EXCEL_ID, ");
            sql.append("    UPDATE_DATE, ");
            sql.append("    UPDATE_NAME ");
            sql.append(" ) VALUES ( ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    SYSDATE, ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    ?, ");
            sql.append("    SYSDATE, ");
            sql.append("    ? ");
            sql.append(" ) ");

    Китайцы составляют SQL запрос. Обратите внимание, что буфер склеиваетсо токо из литералов. Что мешало им написать просто строку с содержимым объединяющим енто все, остается загадкой.

    cheap_chinese, 11 Августа 2009

    Комментарии (13)
  7. PHP / Говнокод #1050

    +73.9

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    function open_connect($db,$serv,$user,$pswd)
     { $i=0;
        ini_set('max_execution_time', '100');
        while( $i<3 && !($dblinx=@mysql_connect( $serv, $user, $pswd )) ) 
    	  {
              $i++;
    		  sleep(30);
    	  }
         ini_restore('max_execution_time'); 
    }

    соединение с бд - большая проблема для php программиста заставляющая выдумывать даже такое

    guest, 16 Мая 2009

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

    +73.8

    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
    public class Date extends java.util.Date{
        @Override
        public String toString(){
            return toLocaleString();
        }
        public Date(String s){
            super(s);
        }
        public Date(int year,int month,int date,int hrs,int min,int sec){
            super(year,month,date,hrs,min,sec);
        }
        public Date(int year,int month,int date,int hrs,int min){
            super(year,month,date,hrs,min);
        }
        public Date(int year,int month,int date){
            super(year,month,date);
        }
        public Date(long date){
            super(date);
        }
        public Date(){
        }
        public java.sql.Date getSQLDate(){
            return new java.sql.Date(getTime());
        }
    }

    из за переопределения и еще какого, а главное как:
    @Override
    public String toString(){
    return toLocaleString();
    }
    писать целый класс, это не каждый сможет.

    maxt, 09 Марта 2010

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

    +73.8

    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
    List<SomeObj> list = getTodayObjects();
    .....
    int i = list.size() - 1;
    for (; i >= 0; i--) {
        SomeObj oldState = list.get(i);
        if (currentObj.getTimestamp() - oldState.getTimestamp() >= 5 * MINUTE) {
            value5MinAgo = oldState.getValue();
            break;
        }
    }
    for (; i >= 0; i--) {
        SomeObj oldState = list.get(i);
        if (currentObj.getTimestamp() - oldState.getTimestamp() >= 15 * MINUTE) {
            value15MinAgo = oldState.getValue();
            break;
        }
    }
    for (; i >= 0; i--) {
        SomeObj oldState = list.get(i);
        if (currentObj.getTimestamp() - oldState.getTimestamp() >= 30 * MINUTE) {
            value30MinAgo = oldState.getValue();
            break;
        }
    }
    for (; i >= 0; i--) {
        SomeObj oldState = list.get(i);
        if (currentObj.getTimestamp() - oldState.getTimestamp() >= 60 * MINUTE) {
            value60MinAgo = oldState.getValue();
            break;
        }
    }
    .....

    фанданго, не иначе

    Anonimous, 04 Марта 2010

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

    +73.7

    1. 1
    2. 2
    3. 3
    #include <math.h>
     ...
    result = (thisCos ? cos : sin)(3.140);

    Знакомый программист прислал из своего проекта.

    Говногость, 10 Ноября 2009

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

    +73.7

    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
    public Object save(Object entity) {
            final EntityManager em = getEntityManager();
            try {
                final EntityTransaction et = em.getTransaction();
                try {
                    et.begin();
                    em.persist(entity);
                    et.commit();
                } finally {
                    if (et != null && et.isActive()) {
                        entity = null;
                        et.rollback();
                    }
                }
            } finally {
                if (em != null && em.isOpen()) {
                    em.close();
                }
            }
            return entity;
        }

    Простое и понятное управление транзакциями придумали трусы!
    А rollback в секции finally, и вложенные try-catch секции -- вообще модная сейчас фишка.

    rh.mbox, 23 Сентября 2009

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