1. 7 мес. назад

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

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

    Курильщик Задача если число делится на 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)
  4. (100) кагбудто if в данном случае что-то диаметрально противоположное :)

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

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

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

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

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

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

  8. webdev ? '

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

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

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

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

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

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

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

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

  13. 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');
    }   
    

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    ответь на (108)

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

    Я типа спал.

  24. 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)
  25. (119) в (113) нет ифа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Ответы: (132)
  35. 7 нед. назад

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

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

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

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

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

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

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

    Все верно

  41. 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;

    Быдлокод?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  51. (145) ok

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

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

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

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

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

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

  56. жду

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  79. (173)

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

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

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

    Ответы: (180)
  81. (172) еще раз, я, ЛИЧНО я считаю что говнокод это работающий код и делающий то что надо НО написанный плохо - трудно читаемый, с запутанной логикой и т.п. но работающий.
    Код который не работает это вообще не код, как лопата нулевого размера.

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

    что значит "код, который не работает"? дай точное определение

    Ответы: (181)
  83. (177) исполняемые файлы исполняются операционной системой и могут иметь длину от 0 до N байт, отрицательную длину они иметь не могут, если конечно ОС не будет проблем с отображением длины

    Ответы: (182)
  84. (179) не работающий код - не работает.

    Ответы: (184)
  85. (180) то, что ты создашь файл "work.com" нулевого размера, не сделает этот файл исполняемым

  86. еще как сделает

    Ответы: (185)
  87. (181) да ну? тогда это вообще не код.
    в отличие от кода, который работает, да неправильно

    Ответы: (189)
  88. (183) нет же

  89. ведь work.com это запись в таблице

  90. а в случае с exe это вообще невозможно - сам стандарт предполагает определённые служебные данные, которые занимают место.
    если ты создашь файл "work.exe" нулевой длины - это будет исполняемый файл?

  91. 03.02.2020 20:38:20 отредактировано webdev

    Эльниньо Так переделай (138) как надо

    Зачем?

    Эльниньо (ты задачу то хоть понял?)

    Нет, я один раз прочитал код, суть задачи не понял даже.

    Ответы: (191)
  92. (184) я предлагаю не уходить в софистику. т.е. если у нас есть гигабайт инсталляции и какая то редкая часть работает криво это плохо но в целом код работает будем считать что это нечто работающее.

    Ответы: (192)
  93. в (138) ключевая часть кода вызывает сегфолт, это неработающий код.

  94. webdev Зачем?
    Нет, я один раз прочитал код, суть задачи не понял даже.

    Понятно. Вот и не пытайся критиковать то, что понять не способен. Программист, [...]

    Ответы: (198)
  95. Курильщик я предлагаю не уходить в софистику

    да. поэтому не подменяй понятия

    Ответы: (193)
  96. andrewks поэтому не подменяй понятия

    я не подменял понятия я дал свое определение говнокоду.

    Ответы: (195) (204)
  97. говнокод - работающий код но написанный так что непонятно как он работает, либо так его просмотр неприятен.

    Ответы: (196) (200) (204)
  98. (193) ты утверждаешь, что говнокод - это правильно работающий, но отвратительно оформленный и/или структурированный код
    я утверждаю, что для говнокода критерий - именно "отвратительно оформленный и/или структурированный", а вовсе не "правильно работающий"

    Ответы: (197)
  99. (194) обфускация - говнокод?

    Ответы: (202)
  100. (195) но если код при запуске тут же валится это ничего не делающий код.

    Ответы: (201) (203)
  101. Эльниньо Понятно. Вот и не пытайся критиковать то, что понять не способен. Программист, [...]

    Почему ты думаешь что я неспособен распознать что твой код говно? Тут ты ошибаешься.

  102. Понеслась [...] по кочкам

  103. Новее ›

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