теперь нельзя и 1-2 раза использовать в сложной функции? Вместо 2х строк кода надо делать 10 "лаконичных логичных и т.д." конструкций без goto?
Откуда этот визг и негодование? Почему под запретом элементарные вещи?
Разъдолбайство и непрофессионализм?
Вечный поиск идеала?
Из-за того что какой-то чудак чего-то начитался мне теперь придётся трахаться с конструкциями языка чтобы избавиться от одного goto во всём проекте? В функции которая умещается в пол экрана.
Другие языки программирования и технологии
Люди которые против goto утверждают что оно мешает чтению, и как пример приводят СОТНЮ goto в функции. И что-же....
Что у тебя за код такой, в котором без goto не обойтись?
Алексей Скляр
даже трудно найти. а как появится так сразу трагедия. при этом, всякие OpenSSL имеют сотни goto. zstd имеет. И никаких вопросов к этим библиотекам.
Сложная функция, требующая goto - в 99.9% ошибка дизайна кода. Разбиваем одну сложную функцию на несколько более простых - и надобность в goto волшебным образом исчезает. А сам код - при нормальном наименовании функций - становится более понятным.
И, да - проблему выхода из вложенных циклов это тоже решает. А в языках с многоуровневыми break / continue такой проблемы вообще нет.
Да, бывают редкие случаи, когда goto реально нужен (особенно в языках без встроенных механизмов обработки ошибок). И тут главное - соблюдать одно простое правило: никогда не делать goto назад по коду. Когда ты делаешь goto только вперёд (вниз, по ходу чтения кода), проблем обычно не возникает. Но как только ты начинаешь делать goto назад (вверх, против направления чтения кода) - код превращается с нечитаемый спагетти.
P.S. У тебя времени нет. А у твоих коллег, которые позже будут читать и модифицировать твой код, время есть? Почему они должны тратить свои время и силы из-за того, что тебе влом написать качественный код? В своих пет-проектах ты можешь писать что угодно и как угодно. Но если ты работаешь в команде, твоя обязанность - писать хорошо читаемый и легко модифицируемый код - даже если на это уйдёт больше времени (неправда - при наличии опыта код без goto пишется столь же быстро, что и код с goto).
И, да - проблему выхода из вложенных циклов это тоже решает. А в языках с многоуровневыми break / continue такой проблемы вообще нет.
Да, бывают редкие случаи, когда goto реально нужен (особенно в языках без встроенных механизмов обработки ошибок). И тут главное - соблюдать одно простое правило: никогда не делать goto назад по коду. Когда ты делаешь goto только вперёд (вниз, по ходу чтения кода), проблем обычно не возникает. Но как только ты начинаешь делать goto назад (вверх, против направления чтения кода) - код превращается с нечитаемый спагетти.
P.S. У тебя времени нет. А у твоих коллег, которые позже будут читать и модифицировать твой код, время есть? Почему они должны тратить свои время и силы из-за того, что тебе влом написать качественный код? В своих пет-проектах ты можешь писать что угодно и как угодно. Но если ты работаешь в команде, твоя обязанность - писать хорошо читаемый и легко модифицируемый код - даже если на это уйдёт больше времени (неправда - при наличии опыта код без goto пишется столь же быстро, что и код с goto).
Любишь жареное гoвнo?
Какой школьник не любит быстрого гото?
в исходниках Linux более 180 тысяч goto. всему есть место.
> Интересно как всезнайки выходят из вложенных циклов без goto
[&]() {
for (...) {
for (...) {
...
if (...) {
return;
}
...
}
}
}
Николай Демидов
брейки кажется везде есть
Такими вопросами занимается наука философия.
Эта наука с помощью научных методов помогает создать идеологию.
Идеология это идеи + логика т.е. идеи которые проверяются с помощью логики на наличие ошибок.
С сильной и хорошей идеологией можно разработать*- правила**, культуру*** и дизайн проекта****.
(*создать с помощью работы; **паттерны проектирования; ***допустимые границы; **** удобную совместную работу частей)
Твой вопрос это вопрос культуры кода. Культура как и всегда применяется в рамках какого либо сообщества и ее нарушение приводит к ее снижению. т.е. по сути ты хочешь нарушить культуру проекта ради уменьшения времени на разработку.
И вот тут возникает вопрос стоит ли снижение уровня культуры сообщества получаемым выгодам для одного участника сообщества.
Это достаточный повод поработать над идеологией проекта т.е. взять идею "Вася Пупкин использует goto и повышает свою производительность" и проверить ее с помощью логики приводя аргументы за и против.
Эта наука с помощью научных методов помогает создать идеологию.
Идеология это идеи + логика т.е. идеи которые проверяются с помощью логики на наличие ошибок.
С сильной и хорошей идеологией можно разработать*- правила**, культуру*** и дизайн проекта****.
(*создать с помощью работы; **паттерны проектирования; ***допустимые границы; **** удобную совместную работу частей)
Твой вопрос это вопрос культуры кода. Культура как и всегда применяется в рамках какого либо сообщества и ее нарушение приводит к ее снижению. т.е. по сути ты хочешь нарушить культуру проекта ради уменьшения времени на разработку.
И вот тут возникает вопрос стоит ли снижение уровня культуры сообщества получаемым выгодам для одного участника сообщества.
Это достаточный повод поработать над идеологией проекта т.е. взять идею "Вася Пупкин использует goto и повышает свою производительность" и проверить ее с помощью логики приводя аргументы за и против.
"Из-за того что какой-то чудак чего-то начитался мне теперь придётся трахаться с
Вместо 2х строк кода надо делать 10 "лаконичных логичных и т.д.""
не фантазируй. Не сиди в иненте.
Читай умные книги и учись программированию.
От воплей в вопросах никакой помощи.
Вместо 2х строк кода надо делать 10 "лаконичных логичных и т.д.""
не фантазируй. Не сиди в иненте.
Читай умные книги и учись программированию.
От воплей в вопросах никакой помощи.
Андрей Игнатов
есть, можно успокоиться
Это скорее личные предпочтения. Каждый программирует в меру своего понимания, привычной стилистики, своих предпочтений. Если навязывается определенная стилистика (дизайн) кода заказчиком в ТЗ, то тут ничего не попишешь, надо следовать заданию. Но вот в команде, такие вещи стоит согласовывать, и аргументированно обосновывать, иначе будут конфликты. И это касается не только стиля, но и выбора инструментов для разработки. Видел, как с пеной у рта доказывали программеры в одной команде, что для сайта визитки надо сразу использовать Yii, т.к. в будущем проект может разрастить и потребуется функциональность заложенная во фреймворке... Тут даже не до goto, вопрос слишком принципиальный :)
Похожие вопросы
- Те кто против goto просто не имели дело с серьёзными сложными алгоритмами?
- Как можно написать программу на языке C, которая будет выводить числа от 1 до 1000 без if, switch, do, while, for, goto?
- паскаль, как работать с оператором goto, как ставить метки, чтобы при операции goto 1,
- Есть ли аналогия goto в с++ и если есть как ей пользоваться(если есть возможность то ответьте с примером)
- Подскажите кто помнит QB (Бэйсик)Что значат операторы: DIM, FOR...NEXT, STEP, GOTO...
- Почему goto нехороший стиль программирования ?
- Почему все так ненавидят Goto?
- Приведите пожалуйста пример программы на ассемблере, использующая API функцию GlobalMemoryStatus. Заранее спасибо.
- Помогите с Си. Вопрос по заданию (насчет типизированной функции, которая должна возвращать массив)
- Командный файл, который выводит список файлов, находящихся в домашнем каталоге пользователя и недоступных ему по чтению.