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

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

    +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
    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
    <?php
    
    class WidgetSidebarUser extends Portlet
    {
        public function renderContent(){
            if(Yii::app()->user->isGuest)
                Yii::app()->controller->redirect('/logout');
            
            $model = User::model()->findByPk(Yii::app()->user->id);
            $this->render('sidebar/user', array('user'=>$model));
        }
    }
    ?>
    
    // sidebar/user
    
    <aside id="sidebar1" class="span3 sidebar">
        <div class="content left ">
            <?php if(!Yii::app()->user->isGuest) if(Yii::app()->user->id === $user->id): ?>
            ...
            <?php else: ?>
                <?php
                $this->widget('application.widgets.ProfileSidebarOther', array(
                    'user' => $user,
                    'profile' => $user->profile,
                ));
                ?>
            <?php endif; ?>
        </div>
    </aside>

    Дорабатываю проект и код немного радует своими проверками. Получается мы выбираем данные пользователя, а потом проверяем "А точно это тот самый пользователь".

    md5S, 03 Марта 2014

    Комментарии (12)
  3. PHP / Говнокод #14419

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    if (($pos = strpos($_SERVER["REQUEST_URI"], "?")) !== false)
    {
    	$params = substr($_SERVER["REQUEST_URI"], $pos+1);
    	parse_str($params, $_GET);

    Bitrix, 404.php

    Посоны не слышали про $_SERVER[QUERY_STRING], зато, сука, неймспейсы знают!

    Boolean, 26 Января 2014

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

    +66

    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
    @NamedQuery(
        		name = "ImageBankTag.findAllTags",
        		query = "select distinct tag from AdTag tag where tag.tag in (:tags) order by tag.tag"
        )
    })
    
    @Data
    @Entity
    @Table(name = "image_bank_tags",uniqueConstraints = {@UniqueConstraint(columnNames={"tag"})})
    public class ImageBankTag implements Serializable{
    
    . . .
    
        @NamedQuery(
        		name = "AdTag.findAllTags",
        		query = "select distinct tag from AdTag tag where tag.tag in (:tags) order by tag.tag"
        )
    })
    
    @Data
    @Entity
    @Table(name = "admanager2_tags",uniqueConstraints = {@UniqueConstraint(columnNames={"tag"})})
    public class AdTag implements Serializable{

    Такой вот своеобразный джоин, с подстраховкой.

    wvxvw, 26 Января 2014

    Комментарии (12)
  5. PHP / Говнокод #14407

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    $result_max = mysql_query("SELECT MAX(id)+1 as max FROM cms_competition;");
    $row_max = mysql_fetch_object($result_max);
    if(!$row_max->max)
          $row_max->max = 1;

    Так ведь проще

    kindofbear, 24 Января 2014

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

    +165

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    /* Здесь мы имеем сраный унаследованный пиздец: количество товара передается в параметрах POST-запроса,
    	имеющих имена вида productX_count, где X - ИД товара. Как предыдущие разработчики разобирали это счастье?
    	Правильно, перебирали все (блядь, ВСЕ, блядь, 20000 штук!) товары и проверяли, есть ли соответствующее
    	значение в запросе.
    */
    
      $items5 = GetIBlockElementList(5);
      while($arItem = $items5->GetNext())
        if(isset($_POST['product'.$arItem['ID']."_id"]) && is_numeric($_POST['product'.$arItem['ID']."_id"]))
        {
          $_PRODUCTS[$arItem['ID']]['count'] = $_POST['product'.$arItem['ID']."_count"];
        }

    В этом коде меня утешает только боль и ненависть комментария.

    clauclauclau, 20 Января 2014

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

    −94

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    import time                                                                      
                                                                                     
    def inttime():                                                                   
        return int(''.join(str(time.time()).split('.')))      
                                                                                     
    def rand():                                                                      
        while True:                                                                  
            s = bin(inttime())[2:]                                                   
            for x in s:                                                              
                yield x

    Этим "рандомом" заполняется клеточный автомат "Жизнь". Нечего было делать.

    x0m9k, 08 Января 2014

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

    +157

    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
    var allowed = [ 0xfe, 0xfc, 0xf8, 0xf0,
                    0xe0, 0xc0, 0x80, 0x00 ];
    for (var i = 0; i < parts.length; i++) {
        var part = parts[i]; 
       
        // ...
    
        if ($.grep(allowed, function(a) { return part == a; }).length > 0) {
            max = 0x00;
        } else {
            FocusObject(object);
            show_alert( jstextTemplate("<jstext>field_contains_bad_IP_mask</jstext>", {name: name}) );
            return false;
        }
    }

    Кусочек валидации для маски подсети. Мы не ищем лёгких путей.

    Elvenfighter, 02 Января 2014

    Комментарии (12)
  9. C# / Говнокод #14299

    +137

    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
    91. 91
    92. 92
    93. 93
    94. 94
    using System;
     using System.Collections.Generic;
     namespace Builder
     {
      public class MainApp
      {
        public static void Main()
        {
          // Create director and builders
          Director director = new Director();
     
          Builder b1 = new ConcreteBuilder1();
          Builder b2 = new ConcreteBuilder2();
     
          // Construct two products
          director.Construct(b1);
          Product p1 = b1.GetResult();
          p1.Show();
     
          director.Construct(b2);
          Product p2 = b2.GetResult();
          p2.Show();
     
          // Wait for user
          Console.Read();
        }
      }
      // "Director"
      class Director
      {
        // Builder uses a complex series of steps
        public void Construct(Builder builder)
        {
          builder.BuildPartA();
          builder.BuildPartB();
        }
      }
      // "Builder"
      abstract class Builder
      {
        public virtual void BuildPartA(){}
        public virtual void BuildPartB(){}
        public virtual Product GetResult(){}
      }
      // "ConcreteBuilder1"
      class ConcreteBuilder1 : Builder
      {
        private readonly Product product = new Product();
        public override void BuildPartA()
        {
          product.Add("PartA");
        }
        public override void BuildPartB()
        {
          product.Add("PartB");
        }
        public override Product GetResult()
        {
          return product;
        }
      }
      // "ConcreteBuilder2"
      class ConcreteBuilder2 : Builder
      {
        private readonly Product product = new Product();
        public override void BuildPartA()
        {
          product.Add("PartX");
        }
        public override void BuildPartB()
        {
          product.Add("PartY");
        }
        public override Product GetResult()
        {
          return product;
        }
      }
      // "Product"
      class Product
      {
        private readonly List<string> parts = new List<string>();
        public void Add(string part)
        {
          parts.Add(part);
        }
        public void Show()
        {
          Console.WriteLine("\nProduct Parts -------");
          foreach (string part in parts)
            Console.WriteLine(part);
        }
      }
     }

    "Хороший","годный" пример паттерна билдер с википедии, не соответствующие лежащей там же Uml схеме чуть больше чем полностью

    Схема
    http://upload.wikimedia.org/wikipedia/ru/2/28/Builder.gif

    kegdan, 29 Декабря 2013

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

    +129

    1. 1
    2. 2
    3. 3
    4. 4
    string fileName = Path.GetFileName(f);
    string fileExt = Path.GetExtension(f);
    string i=fileName.IndexOf(fileExt);
    if (i > -1) fileName = fileName.Remove(i, fileExt.Length);

    Получение имени файла

    sbs, 25 Декабря 2013

    Комментарии (12)
  11. JavaScript / Говнокод #14277

    +157

    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
    91. 91
    function currSnowCalcPrice(type, square, height){
                var price = false;
                switch (type) {
                  //скатная крыша
                  case 1:
                    switch (true) {
                      case square < 125:
                        price = 'min';
                      break      
                     //0 - 20см 
                      case height < 20:
                            switch (true) {                          
                              case square < 500:
                                    price = 39;
                                break
                              case square < 1000:
                                    price = 34;
                                break
                              case square < 2000:
                                    price = 32;
                                break                            
                              default:
                                price = 0;
                            }
                        break
                      //20 - 30 см  
                      case height < 30:
                            switch (true) {
                              case square < 500:
                                    price = 44;
                                break                        
                              default:
                                price = 39;
                            }
                        break
                      default:
                        price = 0;
                    }
                    break
                  case 2:
                    switch (true) {
                      case square < 250:
                        price = 'min';
                      break                     
                      //0 - 14см   
                      case height < 14:
                            switch (true) {
                              case square < 500:
                                    price = 21.5;
                                break  
                              case square < 4500:
                                    price = 19.5;
                                break  
                              case square < 9500:
                                    price = 17.5;
                                break  
                              case square < 15000:
                                    price = 15.5;
                                break                          
                              default:
                                price = 0;
                            }
                        break
                      //14 - 30 см  
                      case height < 30:
                            switch (true) {
                              case square < 500:
                                    price = 23.5;
                                break  
                              case square < 4500:
                                    price = 21.5;
                                break  
                              case square < 9500:
                                    price = 19.5;
                                break  
                              case square < 15000:
                                    price = 17.5;
                                break                          
                              default:
                                price = 0;
                            }
                        break
                      default:
                        price = 0;
                    }
                    break
                  default:
                    price = false;
                }
                return price;
            }

    Функция возвращает цену за уборку одного метра квадратного поверхности. Есть минимальное количество когда будет возвращено значение min. false или 0 в случае не существующего типа поверхности или значений площади или глубины вне загаданного диапазона.

    AlexP, 25 Декабря 2013

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