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

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

    +160

    1. 1
    2. 2
    3. 3
    this.isWait && result.push(campLinkCid);
    
    result.push(this.isWait ? camp.bid : campLinkCid);

    Нужно больше логики.

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

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

    +73

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    public static <T extends Comparable<T>> boolean isLessThan(T a, T b, double numericTolerance) {
        if (a == null) {
            return b != null;
        }
        boolean isLessThan = a.compareTo(b) < 0;
        if (!isLessThan && a instanceof Number && b instanceof Number) {
            isLessThan = ((Comparable) (((Number) a).doubleValue() - numericTolerance)).compareTo(((Number) b).doubleValue()) < 0;
        }
        return isLessThan;
    }

    Один из методов сравнения значений в пределах допустимой погрешности (последняя только для чисел).
    Вроде бы и проще никак, но чувство говна не покидает. Советы по упрощению приветствуются.

    Actine, 16 Сентября 2014

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

    −126

    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
    ТовМат = РегистрыСведений.ТоварнаяМартица;
    ГруппаД = Справочники.КлассификацияABC.НайтиПоНаименованию("Д").Ссылка;
    ТЗНомен = Запрос.Выполнить().Выгрузить();Ит=0;тСерт = Справочники.СертификатыСоответствия.ПустаяСсылка();
    ТЗНомен.Сортировать("Производитель,Сертификат,Номенклатура");
    тПроизвод="";
    Для Каждого стр Из ТзНомен Цикл
    	Если Объект.ИсключитьТоварыГруппыД = Истина Тогда
    		Если стр.Номенклатура.КлассABC = ГруппаД Тогда
    			Продолжить;
    		КонецЕсли;	
    	КонецЕсли;	
    
    	Если стр.Номенклатура.ЭтоГруппа = Ложь Тогда
    		Если НаличиеВМатрице = истина Тогда
    			НаборД = ТовМат.СоздатьНаборЗаписей();
    			// устанавливаем параметры отбора по полному набору Измерений регистра:
    			НаборД.Отбор.нОменклатура.Установить(стр.Номенклатура.Ссылка);
    			НаборД.Прочитать();
    			Если НаборД.Количество() = 0 Тогда
    				Продолжить;
    			Конецесли;	
    		КонецЕсли;

    Бывший программист из нашей конторы отбирает строки таблицы с номенклатурой, по которой отсутствуют записи в регистре сведений, используя при этом другие "удивительные приемы программирования"... Ушел на повышение в саму 1С)))

    GORYNY4, 12 Сентября 2014

    Комментарии (5)
  5. Python / Говнокод #16614

    −102

    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
    def booleanize(value):
        """Return value as a boolean."""
    
        true_values = ("yes", "true", "1")
        false_values = ("no", "false", "0")
    
        if isinstance(value, bool):
            return value
    
        if value.lower() in true_values:
            return True
    
        elif value.lower() in false_values:
            return False

    В комментариях не нуждается.

    Niyakiy, 29 Августа 2014

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

    +157

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function detect_overlap(l1,l2,r1,r2,t1,t2,b1,b2) {
        if (b1<t2) { return false; }
        if (t1>b2) { return false; }
        if (r1<l2) { return false; }
        if (l1>r2) { return false; }
        return true;
    }

    DeRain, 21 Августа 2014

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

    +149

    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
    (function(G, U) {
        "use strict";
        var $ = G.jQuery,
            string = "string",
            number = "number",
            bool   = "boolean",
            object = "object";
    
        function hasStr(obj, prop) {
            return obj.hasOwnProperty(prop) && typeof obj[prop] === string;
        }
    
        function hasNum(obj, prop) {
            return obj.hasOwnProperty(prop) && typeof obj[prop] === number;
        }
    
        function hasArr(obj, prop) {
            return obj.hasOwnProperty(prop) && $.isArray(obj[prop]);
        }
    
        function hasFn(obj, prop) {
            return obj.hasOwnProperty(prop) && $.isFunction(obj[prop]);
        }
    
        function hasBool(obj, prop) {
            return obj.hasOwnProperty(prop) && typeof obj[prop] === bool;
        }
    
        function copyProps(source, target, fields) {
            var i,
                count,
                fieldType,
                fieldTypes = {
                    str : hasStr,
                    bool: hasBool,
                    arr : hasArr,
                    fn  : hasFn,
                    num : hasNum
                };
                
            if (arguments.length < 2){
                return;
            }
            
            if (arguments.length === 2){
                target = {};
            }
    
            if ($.isPlainObject(source) && $.isPlainObject(target) && $.isPlainObject(fields)) {
                for (fieldType in fieldTypes) {
                    if (fieldTypes.hasOwnProperty(fieldType)) {
                        if (hasArr(fields, fieldType)) {
                            for (i = 0, count = fields[fieldType].length; i < count; i += 1) {
                                if (fieldTypes[fieldType](source, fields[fieldType][i])) {
                                    target[fields[fieldType][i]] = source[fields[fieldType][i]];
                                }
                            }
                        }
                    }
                }
            }
            return target;
        }
    
        G.copyProps = copyProps; //Export into global namespace
    }(this, undefined));

    Здравствуйте! Написал функцию, которая безопасно копирует свойства из одного объекта в другой, выполняя проверку типа каждого копируемого поля. Скажите, какие недостатки и насколько оправдано её применение по сравнению со стандартной функцией jQuery extend()? Работает только с простыми объектами, для вложенных объектов нужно ещё раз вызывать эту функцию.

    dunmaksim, 14 Августа 2014

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

    +158

    1. 1
    $_SERVER["DOCUMENT_ROOT"]    = dirname(dirname(dirname(dirname(dirname(dirname(__DIR__)))))) . '/htdocs';

    g441a, 07 Августа 2014

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

    +133

    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
    private CMSEntities entities = new CMSEntities();
            private List<Object> ObjectSets { get; set; }
            private List<Type> Types { get; set; }
             
    
    
            public void GetFields()
            {
                Types = new List<Type>();
                var entitiesType = entities.GetType();
                var assembly = Assembly.Load("CMS.Data");
                var types = assembly.GetTypes();
                foreach (var type in assembly.GetTypes())
                {
                    if (type.BaseType != null &&
                        type.BaseType.Name.Equals("EntityObject") &&
                        type.Name.IndexOf("aspnet",StringComparison.InvariantCultureIgnoreCase)<0 &&
                        type.Name != "sysdiagram")
                    {
                        Types.Add(type);
                    }
                }
                var properties = entitiesType.GetProperties();
                ObjectSets = new List<Object>();
                foreach (var propertyInfo in properties)
                {
                    var obj = propertyInfo.GetValue(entities, null);
                    if(propertyInfo.PropertyType.IsGenericType && obj!=null) ObjectSets.Add(obj);
                }    
            }

    Рефлексия и Entity Framework

    Serg, 05 Августа 2014

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

    +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
    $query = "SELECT DATE_FORMAT(`Date`, '%d.%m.%Y') 'dat',
                             DATE_FORMAT(`Date`, '%Y-%m-%d') 'd'
                        FROM Sklad
                       WHERE OrderID = '{$row->ID}'
                         AND OrderStatusID = 6
                         AND Kol < 0";
            
            $qsklad_data = mysql_fetch_object(mysql_query($query));
    
            if ($row->DateFakt == "00.00.0000") {
               
                $query = "UPDATE Orders
                             SET DateFakt = '{$qsklad_data->d}'
                           WHERE ID = '{$row->ID}'";
    
                $qupddd = mysql_query($query);
            }

    Паттерн программирования: сначала сделать запрос к БД, а потом проверить, нужны ли нам его результаты. $qsklad_data используется только здесь. И опять же два SQL-запроса там, где мог быть один.

    Khvorostin, 31 Июля 2014

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

    −393

    1. 1
    2. 2
    3. 3
    4. 4
    if ([post.postId integerValue]== 587072)
    {
        NSLog(@"ASDASD");
    }

    дебаг йопт

    realsugar, 29 Июля 2014

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