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

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

    −102

    1. 1
    2. 2
    3. 3
    4. 4
    class GNUTranslations(NullTranslations):
        # Magic number of .mo files
        LE_MAGIC = 0x950412de
        BE_MAGIC = 0xde120495

    хуита, 07 Октября 2014

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

    −413

    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
    - (void)webViewDidFinishLoad:(UIWebView *)webView {
        [TMSpinner hide];
        if (self.registrationModel && !self.loggedIn && [[self.webView.request.URL absoluteString] length]) {
            [self autologinTheWebView];
        }
    }
    
    #pragma mark - Black magic
    
    - (void)autologinTheWebView {
        [self.webView stringByEvaluatingJavaScriptFromString:[self javascriptToInject]];
        [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"autologin('%@', '%@');", self.registrationModel.email, self.registrationModel.password]];
        self.loggedIn = YES;
    }
    
    - (NSString *)javascriptToInject {
        return @"autologin = function(email, password) {"
               @"  var emailField = document.getElementById('user_email');"
               @"  var passwordField = document.getElementById('user_password');"
               @"  var submitButton = document.querySelector('input.btn.btn-default.btn-success');"
               @"  emailField.value = email;"
               @"  passwordField.value = password;"
               @"  submitButton.click();"
               @"};";
    }

    js в obj-c. кому то после меня это поддерживать :)

    Drenwtc, 02 Октября 2014

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

    +138

    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
    public List<string> AutoPublishProjectDepartmentNames { get; private set; }
            public string AutoPublishProjectDepartments
            {
                get { return _projectDepartments; }
                set
                {
                    _projectDepartments = value;
    
                    AutoPublishProjectDepartmentNames.Clear();
                    var departments = _projectDepartments.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
                    //Get EPT Names
                    foreach (var department in departments)
                    {
                        try
                        {
                            if (department.Length == 36 || department.Length == 38)
                            {
                                var departmentUid = new Guid(department);
                                AutoPublishProjectDepartmentNames.Add(SqlInstance.GetDepartmentName(departmentUid));
                                continue;
                            }
                        }
                        catch (FormatException)
                        {
                        }
    
                        //Not a guid
                        AutoPublishProjectDepartmentNames.Add(department);
                    }
                }
            }

    Очень хитрая пропертя, пока не засетишь одну пропертю - другая не будет работать. А еще она с гуидами работает. Ооочень хитрая. Юсфуль-туль.

    boades, 25 Сентября 2014

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

    +158

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $q=  mysql_query("select * from BillingParam where Name like ('%  %')");
    
    while($r=mysql_fetch_object($q)){
        $name=str_replace("  ", " ", $r->Name);
        $que="update BillingParam set Name='".$name."' where ID='".$r->ID."'";
        echo $que."<br>";
    
    $qq=mysql_query($que)or die(mysql_error());

    Нужно больше, ещё больше запросов к базе!

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

    Комментарии (5)
  6. 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)
  7. 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)
  8. 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)
  9. 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)
  10. 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)
  11. 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)