1. 4 г. назад

    Почему оператор goto считается быдлокодингом?

    Ответы: (2) (26) (93)
  2. ‹ Ранее
  3. 4 г. назад

    sda553 Нужно переходить на более современные срачи. Например, конструкцию: Для каждого из... считать быдлокодингом

    В чем срач? Все согласны с этим. Я стараюсь писать весь код в стиле:
    const foo = bar(xxx, yyy);
    Без всяких if, for, switch, и прочего мусора.

    Ответы: (79)
  4. 31.01.2020 09:14:54 отредактировано sda553

    (78) ну это ты перегибаешь. Без if, for, switch нет жизни

  5. Как два пальца. Ты попробуй.

  6. Ты же сам писал что для каждого из считать быдлокодом. Свич тоже считается, очевидно. А иф я решил до кучи туда же отправить, чтобы было ещё чище в коде.

    Ответы: (83)
  7. Лучше напишите, кто какими конструкторами пользуется для написания запросов к Sql ...

    Ответы: (84) (94)
  8. 31.01.2020 09:40:04 отредактировано sda553

    (81) для каждого из - частный случай цикла, который сегодня обыдлокодивается.
    Но это никоим образом не бросает тени на другие виды циклов, на иф или на свитч

    Ответы: (95)
  9. (82) hibernate и еще myBatis пользуюсь

  10. Сейчас GoTo уже не выглядит быдлокодингом. Т.к в конфигурациях стало полно асинхрона, оповещений и прочей ереси что значительно усложняет отладку.

  11. Не представляю как можно без if
    Это вообще без условий?

  12. Всё программирование строится на ЕСЛИ-ТО-ИНАЧЕ-ВСЁ

    Ответы: (89)
  13. Цикломатическая сложность процедуры больше 12 это не комильфо

  14. 1Сергей Всё программирование строится на ЕСЛИ-ТО-ИНАЧЕ-ВСЁ

    Это оно сейчас строится в квантовом программировании условия будут не нужны.
    Там же будут все состояния одновременно.

    Ответы: (90)
  15. Курильщик Там же будут все состояния одновременно.

    расскажешь это налоговой

    Ответы: (91)
  16. (90) никаких налоговых к тому времени не будет.

  17. Кто-нить проверял, го-ту умеет вылазить за директивы компилятора в тонком клиенте ?

  18. (0) Потому, что stackoverflow может случится

  19. Bumer Лучше напишите, кто какими конструкторами пользуется для написания запросов к Sql ...

    Для простых запросов пользуюсь какими-то обертками, даже название не помню. Сложные только руками пишу, потому что после конструктора очень трудно разбираться в запросе и оптимизировать. Он там такого может наворотить, что за неделю не разгребешь.

  20. sda553 Но это никоим образом не бросает тени на другие виды циклов

    Тут ты ошибаешься. Циклы, ифы и свичи - это самый настоящий быдлокод.

    Ответы: (96) (97) (98)
  21. webdev Тут ты ошибаешься. Циклы, ифы и свичи - это самый настоящий быдлокод.

    о как!

  22. (95) на хаскеле крапаешь?

    Ответы: (98)
  23. Курильщик (95) на хаскеле крапаешь?

    Не, жаваскрипт.

  24. Задача если число делится на 5 то вывести fuzz если на 3 то buzz а если на 3 и 5 то fuzzbuzz

    Покажи как сделаешь

    Ответы: (100)
  25. Курильщик Задача если число делится на 5 то вывести fuzz если на 3 то buzz а если на 3 и 5 то fuzzbuzz

    Покажи как сделаешь

    Ну это совсем детский сад:

    const n = 15
    const is5 = n % 5 === 0 ? 'fuzz' : ''
    const is3 = n % 3 === 0 ? 'buzz' : ''
    const result = `${is5}${is3}`
    document.write(result)
    Ответы: (101) (105) (108) (129)
  26. (100) кагбудто if в данном случае что-то диаметрально противоположное :)

    Ответы: (104)
  27. -image-

  28. Если интересно, предлагаю такой челендж:
    Я сейчас делаю функцию поиска зацикливаний в структуре. Вот описание простого случая с линейным списком с решением: https://stackoverflow.com/questions/2663115/how-to-detect-a-loop-in-a-linked-list

    У меня немного сложнее, потому что структура не линейная, а может ветвиться как дерево. Ветвлений максимум два. Но бывает и одно. Сможете написать решение с ифами и циклами? Я буду писать без ифов. Потом сравним.

    Можно пользоваться помощью на мисте, мне там как раз очень круто помогли с этой задачей: https://forum.mista.ru/topic.php?id=850281

    Ответы: (343) (537) (543) (544) (563)
  29. 1Сергей случае что-то диа

    Конечно противоположное. В IF некоторые строки программы пропускаются, читать код сложнее, нужно в голове держать возможные варианты. А в моем варианте просто выполняются строки одна за другой по порядку, без всяких ветвлений и блоков.

  30. webdev ? '

    Это же ещё хуже чем if

    Ответы: (106)
  31. Курильщик Это же ещё хуже чем if

    Не хуже. Говнокодом по крайней мере по современным меркам не считается.

    Ответы: (109)
  32. Гугление по запросу тернарный оператор сразу же выдает статьи что он предпочтительнее ИФ, вот например первое попавшееся:
    https://www.javascripttutorial.net/javascript-ternary-operator/

  33. webdev const is5 = n % 5 === 0 ? 'fuzz' : ''
    const is3 = n % 3 === 0 ? 'buzz' : ''

    чем это отличается от if?
    ну, кроме отсутствия самого слова if, конечно

    Ответы: (119)
  34. webdev Не хуже. Говнокодом по крайней мере по современным меркам не считается.

    но это реально говнокод, не подумай что я это специально в пику говорю. Я искренне считаю такое плохой практикой.

  35. 31.01.2020 23:51:54 отредактировано Курильщик
    const n = 15
    const is5 = n % 5 === 0 ? 'fuzz' : ''
    const is3 = n % 3 === 0 ? 'buzz' : ''
    const result = `${is5}${is3}`
    document.write(result)
    
    const n = 15
    if (n % 15 === 0) {
      document.write('fuzzbuzz');
    } else if (n % 5 === 0) {
      document.write('fuzz');
    } else if (n % 3 === 0) {
      document.write('buzz');
    }   
    

    первый код плох не только потому что он плохо-читаем он еще и плохо-расширяем и вдобавок он плохо-отлаживаем.

    второй код прост и понятен, и не требует рефакторинда если понадобится его доработать.

  36. Только ты зачем-то поменял местами про понятность и читаемость. Про расширяемость можно было и первый вариант по другому сделать, с функциями. Просто я решил задачу в лоб, потому что она элементарная и не предполагала расширения.

  37. Что если нужно будет не document.write, а вернуть результат? Тогда твой варик вообще хреновый. Придется еще массив для накопления результатов добавлять.

    Ответы: (114)
  38. Если бы можно было сразу выводить на экран без накопления результатов как это ты сделал, я бы так написал:

    const n = 15
    n % 5 === 0 && document.write('fuzz')
    n % 3 === 0 && document.write('buzz')
    

    Но как я говорил выше, это хреново.

    Ответы: (115) (122) (124) (125) (128)
  39. 01.02.2020 02:08:38 отредактировано Курильщик

    webdev Что если нужно будет не document.write

    Это вообще без разницы ведь.

    Ответы: (116)
  40. (113) этот вариант сильно лучше и действительно не содержит ветвлений.

  41. Курильщик Это вообще без разницы ведь.

    Ну и как ты сделаешь если нужно получить результат целиком? Пример в студию. Я заранее знаю где будет ошибка.

    Ответы: (121)
  42. Куда все слились? Го срачъ!

    Ответы: (119) (120)
  43. Камон, кто следующий?

  44. webdev Куда все слились?

    ответь на (108)

    Ответы: (122)
  45. webdev Куда все слились? Го срачъ!

    Я типа спал.

  46. 01.02.2020 09:29:28 отредактировано Курильщик

    webdev Ну и как ты сделаешь если нужно получить результат целиком? Пример в студию. Я заранее знаю где будет ошибка.

    
    const n = 15
    if (n % 15 === 0) {
      return('fuzzbuzz');
    } else if (n % 5 === 0) {
      return('fuzz');
    } else if (n % 3 === 0) {
      return('buzz');
    }   
    
    
    Ответы: (127)
  47. (119) в (113) нет ифа

    Ответы: (123) (126)
  48. (122) то, что там нет слова "if", делает оператор неусловным (не ветвления)?

    Ответы: (124) (126)
  49. (123) в (113) нет инлайнового ифа. Там по-другому логика построена.

    Ответы: (125) (128)
  50. (124) конкретно в (113) нет

    Ответы: (128)
  51. andrewks (122) то, что там нет слова "if", делает оператор неусловным (не ветвления)?

    Да, как я уже писал. Если нет блоков которые могут пропуститься, а могут и нет, то это проще читать. В примере выше это не заметно, потому что в блоках всего по одной строке. Но может быть и гораздо больше, и чем больше тем сложнее. В то время как отказ от ифов вынуждает все делать в одну строку, и ты не сможешь туда запихать 500 строк, даже если захочешь. Дисциплинирует как бы.

    Ответы: (129)
  52. Курильщик

    
    const n = 15
    if (n % 15 === 0) {
      return('fuzzbuzz');
    } else if (n % 5 === 0) {
      return('fuzz');
    } else if (n % 3 === 0) {
      return('buzz');
    }   
    
    

    Ошибка: Три ретурна. Должен быть только один, в самом конце функции, как Горец.

  53. andrewks (124) конкретно в (113) нет

    В (113) говнокод. Я под Курильщика его подстроил, чтобы ему подошел ответ. Но на самом деле мне он не нравится.

  54. webdev Да, как я уже писал. Если нет блоков которые могут пропуститься, а могут и нет

    webdev const is5 = n % 5 === 0 ? 'fuzz' : ''

    вот это вот не что иное, как
    if (n % 5 === 0) {
    const is5 = 'fuzz'
    } else {
    const is5 = ''
    }

    Ответы: (131)
  55. Нет, это другое. Твой вариант вообще не рабочий.

  56. andrewks вот это вот не что иное, как
    if (n % 5 === 0) {
    const is5 = 'fuzz'
    } else {
    const is5 = ''
    }

    Основное отличие в том, что if ничего не возвращает наружу. То, что объявлено у него внутри блока, там и останется. Выход - использовать внешние переменные, объявленные за пределами блока, чтобы их изменить внутри блока. Что и является говнокодом.

    Ответы: (132)
  57. webdev Выход - использовать внешние переменные, объявленные за пределами блока, чтобы их изменить внутри блока. Что и является говнокодом.

    Ковнокодом является плохо сопровождаемый и/или запутанный код.

  58. Стоп. Ветка о GOTO.
    Приведите пример, когда GOTO предпочтительно

    Ответы: (136) (139)
  59. В bat-файлах использую goto пример приводить не буду, и так все очевидно.

    Ответы: (135)
  60. (134) потому что там по-другому никак :)

    Ответы: (137)
  61. (133) Когда ты гей и твой парень тебе изменяет, тогда предпочтительнее использовать GOTO конечно :)

  62. 1Сергей потому что там по-другому никак

    Все верно

  63. for (i1 = 1; i1 <= d1; i1++)
    {
    for (i2 = 1; i2 <= m1[i1]; i2++)
    {
    for (i3 = 1; i3 <= m2[i1,i2]; i3++)
    {
    for (i4 = 1; i4 <= m3[i1,i2,i3]; i4++)
    {
    if m4[i1,i2,i3,i4] == Yes
    {
    goto Finish;
    }
    }

    }

    }
    }
    Finish:
    cout << "Координаты " << Yes << " = " << i1,i2,i3,i4;

    Быдлокод?

  64. Эльниньо Стоп. Ветка о GOTO.
    Приведите пример, когда GOTO предпочтительно

    Когда нужно написать программу в первую очередь для компьютера, а не для человека, тогда можно говнокодить, и писать что угодно, даже GOTO.
    Например если пишешь программу обработки сигналов в реальном времени под медленный контроллер, который будет работать почти на пределе своих возможностей. Мне когда-то надо было написать умножитель частоты сигналов в 1.5 раза на контроллере стоимостью $1. Уложился в 3 такта, и 10 байт кода. Но без GOTO обойтись было бы сложно, пришлось бы пожертвовать быстродействием.

    Ответы: (142)
  65. 03.02.2020 18:07:01 отредактировано Курильщик

    (138) классический говнокод, да
    Не надо так писать

    Ответы: (141)
  66. Курильщик (138) классический говнокод, да
    Не надо так писать

    Замечание принимаю (в Сях не писал уже более 20 лет).
    Буду благодарен за более изящный код

    Ответы: (143)
  67. webdev Но без GOTO обойтись было бы сложно, пришлось бы пожертвовать быстродействием.

    Если ты про ассемблер то там весь код построен на переходах, по сути гото

    Ответы: (147)
  68. 03.02.2020 18:14:56 отредактировано Курильщик

    (141) я не про синтаксис. Я про гото.
    В тех циклах достаточно добавить флаг о том что надо из циклов выходить. И/или использовать continue в зависимости от тела циклов.
    В коде (138) этого нет, но как правило в си есть выделение памяти, и требуется корректное освобождение памяти.

  69. Т.е. код должен быть готов к тому чтобы без рефакторинга это добавить.

  70. Так переделай (138) как надо

    Ответы: (148)
  71. Эльниньо Быдлокод?

    Вообще жесть :)))

    Ответы: (149)
  72. Курильщик Если ты про ассемблер то там весь код построен на переходах, по сути гото

    Ассемблер - это как раз пример языка для компьютера, так как он низкоуровневый. Очевидно, что читать программу на этом языке сложнее, и разработка дороже. Зато скорость выполнения выше. Чем-то нужно жертвовать чтобы в чем-то выиграть.

  73. (145) ok

    Ответы: (152)
  74. webdev Вообще жесть :)))

    Так переделай (138) как надо
    (ты задачу то хоть понял?)

    Ответы: (150) (151) (188) (257) (516)
  75. (149) почему ты считаешь что все должны броситься и переделывать твой код?

    Ответы: (151)
  76. Курильщик (149) почему ты считаешь что все должны броситься и переделывать твой код?

    Всё просто. Критикуешь - покажи, как надо.
    Вам, профи, западло дать урок быдлокодеру?

    Ответы: (152)
  77. (151) я же написал в (148) - ок

  78. жду

    Ответы: (155)
  79. (138) просто даже не вникая видно несколько логических проблем в коде.
    первое - выход за пределы массива в каждом из циклов обрати внимание на "for (i1 = 1; i1 <= d1; i1++)" i1 растет бесконечно
    второе - i1 <= d1 может никогда не произойти

    Ответы: (156)
  80. (153) можешь эти проблемы устранить? они не связаны с goto

  81. Курильщик (138) просто даже не вникая видно несколько логических проблем в коде.
    первое - выход за пределы массива в каждом из циклов обрати внимание на "for (i1 = 1; i1 <= d1; i1++)" i1 растет бесконечно
    второе - i1 <= d1 может никогда не произойти

    Похоже и ты не понял, какую задачу решает код

    Ответы: (157) (159) (167)
  82. (156) я всё понял, этот код не решает никакую задачу если у тебя будет выход за пределы массива, будет сегфолт.

    Ответы: (167)
  83. или если массивы допустим безграничные то будет исчерпание памяти и в итоге сегфолт

  84. (156) и еще важно иметь ввиду, что говнокод это работающий код, просто некрасиво написанный, в (138) не работающий код, понимаешь о чем я?

    Ответы: (160)
  85. Курильщик и еще важно иметь ввиду, что говнокод это работающий код

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

    Ответы: (161)
  86. (160) если код не рабочий это уже не код

    Ответы: (162)
  87. (161) с чего это? код, выдающий неверный результат, не является кодом?

    Ответы: (164)
  88. даже код, вызывающий 100% сегфолт - это код

    Ответы: (166)
  89. (162) неверный результат это результат. т.е. код отработает но посчитает плохо. а прога которая валится в сегфол при старте это неработающий код.

    Ответы: (165)
  90. Курильщик неработающий код.

    здрасьте. сегфолт является именно результатом работы кода

  91. andrewks сегфолт - это код

    тогда exe-шник нулевого размера это плохо-работающий код.

    Ответы: (168) (172)
  92. Курильщик (156) я всё понял, этот код не решает никакую задачу если у тебя будет выход за пределы массива, будет сегфолт.

    С чего ты решил, что будет выход из массива?

    Ты сейчас напомнил критику моего алгоритма удаления лишних строк в ТЗ крутыми одинэсниками.
    Тоже самое - да оно у тебя зациклится, до он вообще не рабочий...
    Потом - извини невнимательно посмотрел

    Ответы: (175)
  93. (166) не путай непрожаренную яичницу с отсутствием оной вообще

    Ответы: (170)
  94. отверстие нулевого диаметра или нулевой глубины это конечно тоже отверстие

  95. (168) я писал com файлы длиной 2 байта
    первый байт - cli
    второй байт - jmp

    Ответы: (172)
  96. 2 байта - в com файле, отличный код, отлично выполнялся, остановить его можно было только кнопкой РЕЗЕТ.

  97. (170) да. и? какое это имеет отношение к

    Курильщик огда exe-шник нулевого размера это плохо-работающий код.

    Ответы: (173) (178)
  98. (172) я проскочил шаг номер 1 код длиной 2 байта и перешел к коду длиной 0 байт

    Ответы: (176)
  99. 0 байт не сильно отличается от 2 байт.

    Ответы: (177)
  100. Эльниньо С чего ты решил, что будет выход из массива?

    потому что я программист и пишу много кода

  101. (173)

    Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010)[1]; 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382-1:1993)[2].

    Первое определение соответствует понятию «исполняемая программа», второе относится к понятию «исходный текст».
    wiki:Компьютерная_программа

  102. (174) и?
    минус 2 байта не сильно отличается от 0 байт.
    бывают ли программы объёмом минус 2 байта?

    Ответы: (180)
  103. Новее ›

или зарегистрируйтесь чтобы ответить!