Почему оператор goto считается быдлокодингом?
(78) ну это ты перегибаешь. Без if, for, switch нет жизни
Как два пальца. Ты попробуй.
Ты же сам писал что для каждого из считать быдлокодом. Свич тоже считается, очевидно. А иф я решил до кучи туда же отправить, чтобы было ещё чище в коде.
Лучше напишите, кто какими конструкторами пользуется для написания запросов к Sql ...
(82) hibernate и еще myBatis пользуюсь
Сейчас GoTo уже не выглядит быдлокодингом. Т.к в конфигурациях стало полно асинхрона, оповещений и прочей ереси что значительно усложняет отладку.
Не представляю как можно без if
Это вообще без условий?
Цикломатическая сложность процедуры больше 12 это не комильфо
(90) никаких налоговых к тому времени не будет.
Кто-нить проверял, го-ту умеет вылазить за директивы компилятора в тонком клиенте ?
(0) Потому, что stackoverflow может случится
Bumer Лучше напишите, кто какими конструкторами пользуется для написания запросов к Sql ...
Для простых запросов пользуюсь какими-то обертками, даже название не помню. Сложные только руками пишу, потому что после конструктора очень трудно разбираться в запросе и оптимизировать. Он там такого может наворотить, что за неделю не разгребешь.
webdev Тут ты ошибаешься. Циклы, ифы и свичи - это самый настоящий быдлокод.
о как!
Задача если число делится на 5 то вывести fuzz если на 3 то buzz а если на 3 и 5 то fuzzbuzz
Покажи как сделаешь
Курильщик Задача если число делится на 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)
Если интересно, предлагаю такой челендж:
Я сейчас делаю функцию поиска зацикливаний в структуре. Вот описание простого случая с линейным списком с решением: https://stackoverflow.com/questions/2663115/how-to-detect-a-loop-in-a-linked-list
У меня немного сложнее, потому что структура не линейная, а может ветвиться как дерево. Ветвлений максимум два. Но бывает и одно. Сможете написать решение с ифами и циклами? Я буду писать без ифов. Потом сравним.
Можно пользоваться помощью на мисте, мне там как раз очень круто помогли с этой задачей: https://forum.mista.ru/topic.php?id=850281
1Сергей случае что-то диа
Конечно противоположное. В IF некоторые строки программы пропускаются, читать код сложнее, нужно в голове держать возможные варианты. А в моем варианте просто выполняются строки одна за другой по порядку, без всяких ветвлений и блоков.
Гугление по запросу тернарный оператор сразу же выдает статьи что он предпочтительнее ИФ, вот например первое попавшееся:
https://www.javascripttutorial.net/javascript-ternary-operator/
webdev Не хуже. Говнокодом по крайней мере по современным меркам не считается.
но это реально говнокод, не подумай что я это специально в пику говорю. Я искренне считаю такое плохой практикой.
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'); }
первый код плох не только потому что он плохо-читаем он еще и плохо-расширяем и вдобавок он плохо-отлаживаем.
второй код прост и понятен, и не требует рефакторинда если понадобится его доработать.
Только ты зачем-то поменял местами про понятность и читаемость. Про расширяемость можно было и первый вариант по другому сделать, с функциями. Просто я решил задачу в лоб, потому что она элементарная и не предполагала расширения.
Что если нужно будет не document.write, а вернуть результат? Тогда твой варик вообще хреновый. Придется еще массив для накопления результатов добавлять.
Если бы можно было сразу выводить на экран без накопления результатов как это ты сделал, я бы так написал:
const n = 15 n % 5 === 0 && document.write('fuzz') n % 3 === 0 && document.write('buzz')
Но как я говорил выше, это хреново.
(113) этот вариант сильно лучше и действительно не содержит ветвлений.
Камон, кто следующий?
webdev Куда все слились? Го срачъ!
Я типа спал.
webdev Ну и как ты сделаешь если нужно получить результат целиком? Пример в студию. Я заранее знаю где будет ошибка.
const n = 15 if (n % 15 === 0) { return('fuzzbuzz'); } else if (n % 5 === 0) { return('fuzz'); } else if (n % 3 === 0) { return('buzz'); }
andrewks (122) то, что там нет слова "if", делает оператор неусловным (не ветвления)?
Да, как я уже писал. Если нет блоков которые могут пропуститься, а могут и нет, то это проще читать. В примере выше это не заметно, потому что в блоках всего по одной строке. Но может быть и гораздо больше, и чем больше тем сложнее. В то время как отказ от ифов вынуждает все делать в одну строку, и ты не сможешь туда запихать 500 строк, даже если захочешь. Дисциплинирует как бы.
const n = 15 if (n % 15 === 0) { return('fuzzbuzz'); } else if (n % 5 === 0) { return('fuzz'); } else if (n % 3 === 0) { return('buzz'); }
Ошибка: Три ретурна. Должен быть только один, в самом конце функции, как Горец.
В (113) говнокод. Я под Курильщика его подстроил, чтобы ему подошел ответ. Но на самом деле мне он не нравится.
Нет, это другое. Твой вариант вообще не рабочий.
andrewks вот это вот не что иное, как
if (n % 5 === 0) {
const is5 = 'fuzz'
} else {
const is5 = ''
}
Основное отличие в том, что if ничего не возвращает наружу. То, что объявлено у него внутри блока, там и останется. Выход - использовать внешние переменные, объявленные за пределами блока, чтобы их изменить внутри блока. Что и является говнокодом.
webdev Выход - использовать внешние переменные, объявленные за пределами блока, чтобы их изменить внутри блока. Что и является говнокодом.
Ковнокодом является плохо сопровождаемый и/или запутанный код.
Стоп. Ветка о GOTO.
Приведите пример, когда GOTO предпочтительно
В bat-файлах использую goto пример приводить не буду, и так все очевидно.
(133) Когда ты гей и твой парень тебе изменяет, тогда предпочтительнее использовать GOTO конечно :)
1Сергей потому что там по-другому никак
Все верно
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;
Быдлокод?
Эльниньо Стоп. Ветка о GOTO.
Приведите пример, когда GOTO предпочтительно
Когда нужно написать программу в первую очередь для компьютера, а не для человека, тогда можно говнокодить, и писать что угодно, даже GOTO.
Например если пишешь программу обработки сигналов в реальном времени под медленный контроллер, который будет работать почти на пределе своих возможностей. Мне когда-то надо было написать умножитель частоты сигналов в 1.5 раза на контроллере стоимостью $1. Уложился в 3 такта, и 10 байт кода. Но без GOTO обойтись было бы сложно, пришлось бы пожертвовать быстродействием.
Т.е. код должен быть готов к тому чтобы без рефакторинга это добавить.
Курильщик Если ты про ассемблер то там весь код построен на переходах, по сути гото
Ассемблер - это как раз пример языка для компьютера, так как он низкоуровневый. Очевидно, что читать программу на этом языке сложнее, и разработка дороже. Зато скорость выполнения выше. Чем-то нужно жертвовать чтобы в чем-то выиграть.
(153) можешь эти проблемы устранить? они не связаны с goto
или если массивы допустим безграничные то будет исчерпание памяти и в итоге сегфолт
Курильщик неработающий код.
здрасьте. сегфолт является именно результатом работы кода
Курильщик (156) я всё понял, этот код не решает никакую задачу если у тебя будет выход за пределы массива, будет сегфолт.
С чего ты решил, что будет выход из массива?
Ты сейчас напомнил критику моего алгоритма удаления лишних строк в ТЗ крутыми одинэсниками.
Тоже самое - да оно у тебя зациклится, до он вообще не рабочий...
Потом - извини невнимательно посмотрел
отверстие нулевого диаметра или нулевой глубины это конечно тоже отверстие
2 байта - в com файле, отличный код, отлично выполнялся, остановить его можно было только кнопкой РЕЗЕТ.
Эльниньо С чего ты решил, что будет выход из массива?
потому что я программист и пишу много кода
Компью́терная програ́мма — 1) комбинация компьютерных инструкций и данных, позволяющая аппаратному обеспечению вычислительной системы выполнять вычисления или функции управления (стандарт ISO/IEC/IEEE 24765:2010)[1]; 2) синтаксическая единица, которая соответствует правилам определённого языка программирования, состоящая из определений и операторов или инструкций, необходимых для определённой функции, задачи или решения проблемы (стандарт ISO/IEC 2382-1:1993)[2].
Первое определение соответствует понятию «исполняемая программа», второе относится к понятию «исходный текст».
wiki:Компьютерная_программа