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

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

    −398

    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
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        UIBarButtonItem *saveButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Save", nil) style:UIBarButtonItemStylePlain target:self action:@selector(save:)];
        
        // ...
    
        self.navigationItem.rightBarButtonItems = @[saveButton, someOtherButton];
    
        self.saveBarButtonItem = saveButton;
    }
    
    - (void)someMethod
    {
        [self.navigationItem.rightBarButtonItems enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop){
            UIBarButtonItem *barItem = (UIBarButtonItem *)obj;
            if ([barItem.title isEqualToString:NSLocalizedString(@"Save", nil)]) {
                barItem.enabled = NO;
            }
        }];
    }

    Задача: включать/выключать кнопку по определенному событию.

    gumbert, 02 Октября 2014

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

    +76

    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
    static final String MIN_INTEGER = String.valueOf(Integer.MIN_VALUE);
      static final String MAX_INTEGER = String.valueOf(Integer.MAX_VALUE);
      static final String MIN_LONG = String.valueOf(Long.MIN_VALUE);
      static final String MAX_LONG = String.valueOf(Long.MAX_VALUE);
    
      static final int NS_INTEGER = 1;
      static final int NS_LONG = 2;
    
      /**
       * Проверяет, является ли передаваемая строка строковым представлением числа типа int (long)
       * @param s строка для проверки
       * @return <code>true</code>, если строка может быть распарсена как int (ling).
       * @see Integer#parseInt
       * @see Long#parseLong
       */
      private static boolean isNumber(String s, int NUMBER_SIZE) {
        String MIN_NUMBER = "", MAX_NUMBER = "";
        switch (NUMBER_SIZE) {
          case (NS_INTEGER):
            MIN_NUMBER = MIN_INTEGER;
            MAX_NUMBER = MAX_INTEGER;
          break;
          case (NS_LONG):
            MIN_NUMBER = MIN_LONG;
            MAX_NUMBER = MAX_LONG;
          break;
        }
        if (s == null) return false;
        final int len = s.length();
        boolean negative = false;
        int pos = len > 0 && (negative = s.charAt(0) == '-') ? 1 : 0;
        if (pos == len) return false;
        while (pos < len && s.charAt(pos) == '0') pos++; //пропустим 0
        if (pos == len) return true; // там 0
        // если длина заведомо больше, то и значение по-любому выходит за пределы
        if (negative && len - pos > MIN_NUMBER.length() - 1 || len - pos > MAX_NUMBER.length()) return false;
        // нужно проверять предельные значения
        boolean needCheckRange = negative && len - pos == MIN_NUMBER.length() - 1 || len - pos == MAX_NUMBER.length();
        if (needCheckRange) {
          final String rangeString = negative ? MIN_NUMBER : MAX_NUMBER;
          for (int i = negative? 1:0; pos<len; pos++,i++) {
            final char c = s.charAt(pos);
            char r = 0;
            if (c < '0' || c > '9' ||
                (needCheckRange && c > (r = rangeString.charAt(i))) ||
                ((needCheckRange &= c == r) && false))
              return false;
          }
        } else {
          for (;pos<len;pos++) {
            final char c = s.charAt(pos);
            if (c < '0' || c > '9')
              return false;
          }
        }
        return true;
      }

    glprizes, 24 Сентября 2014

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

    +156

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if (($parents = $method_id->getParentRepeated()) || ($parents = $method_id->getParentGroups())) {
       if(!is_array($parents)){
            $parents=[$parents];
       }
       foreach($parents as $parent){
        ......
       }
    }

    О_____________О
    и после этого ты говоришь что я перемурил с замыканиями? :D

    limitium, 23 Сентября 2014

    Комментарии (1)
  5. JavaScript / Говнокод #16750

    +156

    1. 1
    jQuery("#myId"+object+".myTr"+array.length-1).append(JSON.parse(object));

    Appending result to grid table

    armengabriel, 22 Сентября 2014

    Комментарии (1)
  6. PHP / Говнокод #16677

    +155

    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 function getByAllParameters()
        {
            $fields = array_keys($this->getFields());
            unset($fields[0]);
            sort($fields);
            if($this->getByConditions(array('id_user', 'status', 'card_bin', 'card_suffix', 'id_card_type', 'card_token'))){
                $processing = new Processing();
                $processing->id = $this->id_processing;
                return $processing->getByPrimary() && $processing->enabled == 1;
            }
            return false;
        }

    dimkich, 11 Сентября 2014

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

    +156

    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
    foreach($PROP as $k1 => $val1)
    		{
    			if(is_array($val1))
    			{
    				foreach($val1 as $k2 => $val2)
    				{
    					$text_name = preg_replace("/([^a-z0-9])/is", "_", "PROP[".$k1."][".$k2."][VALUE][TEXT]");
    					if(array_key_exists($text_name, $_POST))
    					{
    						$type_name = preg_replace("/([^a-z0-9])/is", "_", "PROP[".$k1."][".$k2."][VALUE][TYPE]");
    						$PROP[$k1][$k2]["VALUE"] = array(
    							"TEXT" => $_POST[$text_name],
    							"TYPE" => $_POST[$type_name],
    						);
    					}
    				}
    			}
    		}
    
    		foreach($PROP as $k1 => $val1)
    		{
    			if(is_array($val1))
    			{
    				foreach($val1 as $k2 => $val2)
    				{
    					if(!is_array($val2))
    						$PROP[$k1][$k2] = array("VALUE" => $val2);
    				}
    			}
    		}

    bitrix

    как вам организация цикла(ов)

    memclutter, 01 Сентября 2014

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

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    function showHelp() {
        var $is_hidden = document.getElementById('help_btn').style.display == '' ? true : false;
        document.getElementById('help_btn').style.display = $is_hidden ? 'none' : '';
        document.getElementById('help_text').style.display = $is_hidden ? '' : 'none';
        return false;
    }

    Больше тернарников богу тернарников!

    http://83.102.180.29/ (заглушка "Билайна")

    gost, 31 Августа 2014

    Комментарии (1)
  9. PHP / Говнокод #16620

    +154

    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
    switch($step) {
            case 0:
                    setup_config_display_header();
    ?>
    <p><?php _e( 'Welcome to WordPress. Before getting started, we need some information on the database. You will need to know the following items before proceeding.' ) ?></p>
    <ol>
            <li><?php _e( 'Database name' ); ?></li>
            <li><?php _e( 'Database username' ); ?></li>
            <li><?php _e( 'Database password' ); ?></li>
            <li><?php _e( 'Database host' ); ?></li>
            <li><?php _e( 'Table prefix (if you want to run more than one WordPress in a single database)' ); ?></li>
    </ol>
    <p><strong><?php _e( "If for any reason this automatic file creation doesn’t work, don’t worry. All this does is fill in the database information to a configuration file. You may also simply open <code>wp-config-sample.php</code> in a text editor, fill in your information, and save it as <code>wp-config.php</code>." ); ?></strong></p>
    <p><?php _e( "In all likelihood, these items were supplied to you by your Web Host. If you do not have this information, then you will need to contact them before you can continue. If you’re all ready…" ); ?></p>
    <p class="step"><a href="setup-config.php?step=1<?php if ( isset( $_GET['noapi'] ) ) echo '&noapi'; ?>" class="button button-large"><?php _e( 'Let’s go!' ); ?></a></p>
    <?php
            break;
            case 1:
                    setup_config_display_header();
    //...
            case 2:
            foreach ( array( 'dbname', 'uname', 'pwd', 'dbhost', 'prefix' ) as $key )
                    $$key = trim( wp_unslash( $_POST[ $key ] ) );
            $tryagain_link = '</p><p class="step"><a href="setup-config.php?step=1" onclick="javascript:history.go(-1);return false;" class="button button-large">' . __( 'Try again' ) . '</a>';
            if ( empty( $prefix ) )
                    wp_die( __( '<strong>ERROR</strong>: "Table Prefix" must not be empty.' . $tryagain_link ) );
            // Validate $prefix: it can only contain letters, numbers and underscores.
            if ( preg_match( '|[^a-z0-9_]|i', $prefix ) )
                    wp_die( __( '<strong>ERROR</strong>: "Table Prefix" can only contain numbers, letters, and underscores.' . $tryagain_link ) );
            // Test the db connection.
            /**#@+
             * @ignore
             */
            define('DB_NAME', $dbname);
            define('DB_USER', $uname);
            define('DB_PASSWORD', $pwd);
            define('DB_HOST', $dbhost);
            /**#@-*/
            // We'll fail here if the values are no good.
            require_wp_db();
    
    // еще двести строк свитча с html, обработкой данных прямо на лету и даже небольшим количеством инлайн-js

    Захотел я подцепиться к внутреннему api установки вордпресса, чтобы эту самую установку делать через конфиг-файлы и композер. В результате проще оказалось имитировать окружение веб-сервера, заполнять всякие $_GET-$_POST и просто подключать нужный файл. А как они сами с этим адом работают - для меня остается загадкой

    Целиком https://core.trac.wordpress.org/browser/tags/3.9.2/src/wp-admin/setup-config.php и https://core.trac.wordpress.org/browser/tags/3.9.2/src/wp-admin/install.php

    Fike, 30 Августа 2014

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

    +159

    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
    $(function () {
        $('#Who').click(whoAre);
    });
    
    function whoAre() {
        var who = document.getElementById('whoAreyou');
        var value = who.style.display;
        var aspnetRoles = document.getElementById('aspnetRoles');
        
        if (value == "none") {
            who.style.display = "block";
                aspnetRoles[0].value = "Агент";
                aspnetRoles[1].value = "Арендодатель";
                aspnetRoles[0].text = "Агент";
                aspnetRoles[1].text = "Арендодатель";
        } else {
            who.style.display = "none";
            
            aspnetRoles[0].value = "Moderator";
            aspnetRoles[1].value = "Moderator";
            aspnetRoles[0].text = "Moderator";
            aspnetRoles[1].text = "Moderator";
        }
        
    }

    меняет элементы, option

    Emir, 19 Августа 2014

    Комментарии (1)
  11. Куча / Говнокод #16558

    +128

    1. 1
    2. 2
    3. 3
    4. 4
    ng-include="'views/partials/header.html'"
    - class="navbar navbar-static-fixed-top nav"></div>
    + /*class="navbar navbar-static-fixed-top nav"*/></div>
     <ui-view id="main" class="container" id="mainContainer"></ui-view>

    GIT commit diff for Angular template

    armengabriel, 18 Августа 2014

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