Почему оператор goto считается быдлокодингом?
Только ты зачем-то поменял местами про понятность и читаемость. Про расширяемость можно было и первый вариант по другому сделать, с функциями. Просто я решил задачу в лоб, потому что она элементарная и не предполагала расширения.
Что если нужно будет не 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:Компьютерная_программа
(180) то, что ты создашь файл "work.com" нулевого размера, не сделает этот файл исполняемым
(183) нет же
ведь work.com это запись в таблице
а в случае с exe это вообще невозможно - сам стандарт предполагает определённые служебные данные, которые занимают место.
если ты создашь файл "work.exe" нулевой длины - это будет исполняемый файл?
в (138) ключевая часть кода вызывает сегфолт, это неработающий код.
Эльниньо Понятно. Вот и не пытайся критиковать то, что понять не способен. Программист, [...]
Почему ты думаешь что я неспособен распознать что твой код говно? Тут ты ошибаешься.
Понеслась [...] по кочкам
любой сжатый exe-файл - говнокод? ведь
Курильщик непонятно как он работает, либо так его просмотр неприятен
Если конечно не ожидалось что первая же инструкция привет к вылету.
Неработающий код тоже может быть говнокодом. Одно другому не мешает.
Если написать работающий говнокод, а потом добавить в него синтаксическую ошибку, от этого он не перестанет быть говнокодом.
(204) и?
Говнокод пишут по неопытности а обфускация умышленное действие. Если я говоря про говнокод упустил это слово то это подразумевать можно. Но я предлагаю не доводить до маразма.
webdev Неработающий код тоже может быть говнокодом
Пусть неработающий говнокод хотя бы доберется до кода работающего, но говняного.