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

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

    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
    function * getTreePost(postsInfo, id) {
      var parent = _.filter(postsInfo, function (item) {
        return Boolean(item._id == id);
      });
    
      var children = _.filter(postsInfo, function (item) {
        return Boolean(item.parentId);
      });
    
      return _.union(parent, findChildren(id, children));
    
      function findChildren(parentId) {
        if (parentId) {
          var data = _.where(children, {parentId: parentId});
          var ret = [];
          if (data.length) {
            _.each(data, function (item, index) {
              var data_r = findChildren(item._id);
              if (data_r.length) {
                ret = _.union(data_r, ret);
              }
            });
            return _.union(data, ret);
          } else
            return [];
        } else return [];
      }
    }

    обычная рекурсия

    volodymyrkoval, 18 Мая 2016

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

    +1

    1. 1
    2. 2
    3. 3
    if (round($this->shot, 2, PHP_ROUND_HALF_DOWN) > round($this->getSumBonus(), 2, PHP_ROUND_HALF_DOWN)) {
          return false;
    }

    Сравнение двух double числе

    govnokoderphp, 10 Мая 2016

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

    +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
    // новый тестовый экшн в контроллере
            public function actionNew($alias)
        {
            $model=Partners::model()->model()->findByAttributes(array('alias'=>$alias));
                   
                    if($model==null)
                throw new CHttpException(404,'The requested page does not exist.');
                           
                    $this->render('view',array(
                'model'=>$this->loadModel($model->id),
            ));
           
        }
     
    // правило в конфиге
    // '<module:\w+>/<controller:\w+>/<alias:\w+>' => '<module>/<controller>/new',

    https://vk.com/echo_php?w=wall-175_189930%2Fall

    Уи1

    Keeper, 07 Мая 2016

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

    +1

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    <ol ng-init="citationsLimit = 3" ng-model="citationsLimit">
    	<li class="citation citationList" ng-repeat="citation in answerFact.citations | limitTo: citationsLimit as citationsResult">
    		<i class="fa ic-marker fa-circle" aria-hidden="true"></i>
    		<div class="citation-text">
    			<span ng-bind-html="citation.highlightedSentenceString"></span>
    			<span ng-if="citation.source">
    				(<a  href="{{citation.source}}" target="_blank">{{citation.source}}</a>)
    			</span>
    		</div>
    	</li>
    </ol>

    ifmy, 06 Мая 2016

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

    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
    <?php
    namespace DoctrineExtensions;
    use \Doctrine\ORM\Event\LoadClassMetadataEventArgs;
    /**
     * Расширение для Doctrine ORM
     * Позволяет отслеживать и работать не со всей базой, а только с таблицами с префиксом
     * Необходимо для уживания с битриксом
     *
     * Class TablePrefix
     * @package DoctrineExtensions
     */
    class TablePrefix
    {
        protected $prefix = '';
        public function __construct($prefix)
        {
            $this->prefix = (string) $prefix;
        }
        public function loadClassMetadata(LoadClassMetadataEventArgs $eventArgs)
        {
            $classMetadata = $eventArgs->getClassMetadata();
            $classMetadata->setTableName($this->prefix . $classMetadata->getTableName());
            foreach ($classMetadata->getAssociationMappings() as $fieldName => $mapping) {
                if ($mapping['type'] == \Doctrine\ORM\Mapping\ClassMetadataInfo::MANY_TO_MANY) {
                    $mappedTableName = $classMetadata->associationMappings[$fieldName]['joinTable']['name'];
                    $classMetadata->associationMappings[$fieldName]['joinTable']['name'] = $this->prefix . $mappedTableName;
                }
            }
        }
    }

    Адепты битрикса добрались до Doctrine ORM. И вот что из этого получилось.
    Заставь дурака ORM подключать, он и events задрочит.

    Keeper, 06 Мая 2016

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

    +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
    if(!strpos($amount,'.')) {
        $amount = $amount . '.00';
    } else {
    	$strlength = strlen(explode('.',$amount)[1]);
    	if($strlength != 2) {
    		if($strlength == 1) {
    			$amount = $amount . '0';
    		}
    		if($strlength > 2) {
    			$amount = round($amount,2);
    		}
    	}
    }

    Получение дробного до сотых числа

    ykpon, 05 Мая 2016

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

    0

    1. 1
    2. 2
    3. 3
    //- ASAP OR DIE♪
        //   re: ASAP OR DIE♪
        //-   next time, you should die

    mcheguevara2, 04 Мая 2016

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

    −10

    1. 1
    2. 2
    3. 3
    4. 4
    static void Alert(object text)
    		{
    			Console.WriteLine(text);
    		}

    d_fomenok, 17 Апреля 2016

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

    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
    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
    private void CaretNormalize()  {
                if (Template.Terminals.Count == 0) { _sTermEnd = _sOffStart = _sOffEnd = _sTermStart = 0; return; }
                if (_sTermStart == _sTermEnd) {
                    if (_sTermStart < 0) _sTermEnd = _sOffStart = _sOffEnd = _sTermStart = 0;
                    else if (_sTermEnd > Template.Terminals.Count - 1) {
                        _sTermEnd = _sTermStart = Template.Terminals.Count - 1;
                        _sOffStart = _sOffEnd = Template.Terminals[Template.Terminals.Count - 1].Text.Length;
                    }
                    else  {
                        if (_sOffStart != _sOffEnd) {
                            var nos = Math.Min(_sOffStart, _sOffEnd);
                            _sOffEnd = Math.Max(_sOffStart, _sOffEnd);
                            _sOffStart = nos;
                            if (_sOffStart < 0)  {
                                _sTermEnd = --_sTermStart;
                                if (_sTermEnd < 0) _sTermStart = _sOffStart = 0; else _sOffStart = Template.Terminals[_sTermEnd].Text.Length - 1;
                            }
                            if (_sOffEnd > Template.Terminals[_sTermEnd].Text.Length - 1) {
                                _sTermEnd = ++_sTermStart;
                                if (_sTermEnd > Template.Terminals.Count - 1)
                                {
                                    _sTermEnd = Template.Terminals.Count - 1;
                                    _sOffEnd = Template.Terminals[_sTermEnd].Text.Length;
                                }
                                else _sOffEnd = 0;
                            }
                        }
                        else
                        {
                            if (_sOffStart < 0) {
                                _sTermEnd = --_sTermStart;
                                if (_sTermEnd < 0)  _sTermStart = _sOffEnd = _sOffStart = 0; else _sOffEnd = _sOffStart = Template.Terminals[_sTermEnd].Text.Length - 1;
                            }
                            if (_sOffEnd > Template.Terminals[_sTermEnd].Text.Length - 1) {
                                _sTermEnd = ++_sTermStart;
                                if (_sTermEnd > Template.Terminals.Count - 1) {
                                    _sTermEnd = Template.Terminals.Count - 1;
                                    _sOffEnd = _sOffStart = Template.Terminals[_sTermEnd].Text.Length;
                                } else _sOffEnd = _sOffStart = 0;
                            }
                        }
                    }
                } else {
                    if (_sTermStart > _sTermEnd) {
                        var t = _sTermStart;
                        _sTermStart = _sTermEnd;
                        _sTermEnd = t;
                        t = _sOffStart;
                        _sOffStart = _sOffEnd;
                        _sOffEnd = t;
                    }
                    if (_sTermStart < 0) _sOffStart = _sTermStart = 0;
    
                    if (_sTermEnd > Template.Terminals.Count - 1) {
                        _sTermEnd = Template.Terminals.Count - 1;
                        _sOffEnd = Template.Terminals[Template.Terminals.Count - 1].Text.Length;
                    }
                    if (_sOffStart < 0) {
                        --_sTermStart;
                        if (_sTermStart < 0) _sTermStart = _sOffStart = 0; else _sOffStart = Template.Terminals[_sTermStart].Text.Length - 1;
                    }
                    if (_sOffEnd > Template.Terminals[_sTermEnd].Text.Length - 1) {
                        ++_sTermEnd;
                        if (_sTermEnd > Template.Terminals.Count - 1) {
                            _sTermEnd = Template.Terminals.Count - 1;
                            _sOffEnd = Template.Terminals[_sTermEnd].Text.Length;
                        }
                        else _sOffEnd = 0;
                    }
                }
            }

    qwe345asd, 17 Апреля 2016

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

    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
    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
    WriteBuffer = enc.GetBytes("$ FETCH " + number + " BODY[HEADER]\r\n");
    netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
    ListMessage = strReader.ReadLine();
    //...
    while ((ListMessage.IndexOf("$ OK ") == -1) && (ListMessage.IndexOf("$ BAD ") == -1))
    {
            //Типа там читаем всякие заголовки и прочие бла-бла
            if (ListMessage.IndexOf("filename=") > -1)
            {
                    temp = ListMessage.Replace("filename=", "");
                    temp = temp.Trim();
                    file_name = temp;
                    is_file = 1; temp = ""; is_att = 1;
            }
            //...
            ListMessage = strReader.ReadLine();
            continue;
    }
    //...
    WriteBuffer = enc.GetBytes("$ FETCH " + number + " BODY[TEXT]\r\n");
    netStream.Write(WriteBuffer, 0, WriteBuffer.Length);
    ListMessage = strReader.ReadLine();
    
    temp = "";
    end_file = 0;
    body = "";
    if (ListMessage.IndexOf("$ BAD ") == -1) ListMessage = strReader.ReadLine();
    if (ListMessage == "")
            is_body = 0;
    else
            is_body = 1;
    while ((ListMessage.IndexOf("$ OK ") == -1) && (ListMessage.IndexOf("$ BAD ") == -1))
    {
            if (is_body == 1)
            {
                    if (ListMessage == "")
                            is_body = 0;
                    else
                            body = body + ListMessage;
            }
            if ((is_att == 1) && (end_file == 0))
            {
                    if (is_file == 1)
                    {
                            if (ListMessage.IndexOf("--") > -1)
                                    end_file = 1;
                            else
                                    temp = temp + ListMessage;
                    }
                    if (ListMessage == "")
                    {
                            is_file = 1;
                    }
            }
            if (ListMessage.IndexOf("Content-Disposition: attachment;") > -1)
            {
                    is_att = 1;
            }
            //...
            ListMessage = strReader.ReadLine();
            continue;
    }
    if (is_att==0)
    {
            //А тут ничего интересного, просто декодирование из Base64 и сохранение в файл
    }

    Следите за булями (точнее, их суррогатами).

    ЗЫ: да, я уже выкладывал кусок из того же модуля, и там уже были некоторые куски, которые попали и сюда тоже.

    tucvbif, 02 Апреля 2016

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