Другие языки программирования и технологии

Люди которые против goto утверждают что оно мешает чтению, и как пример приводят СОТНЮ goto в функции. И что-же....

теперь нельзя и 1-2 раза использовать в сложной функции? Вместо 2х строк кода надо делать 10 "лаконичных логичных и т.д." конструкций без goto?
Откуда этот визг и негодование? Почему под запретом элементарные вещи?
Разъдолбайство и непрофессионализм?
Вечный поиск идеала?


Из-за того что какой-то чудак чего-то начитался мне теперь придётся трахаться с конструкциями языка чтобы избавиться от одного goto во всём проекте? В функции которая умещается в пол экрана.
Алексей Скляр
Алексей Скляр
30 065
Что у тебя за код такой, в котором без goto не обойтись?
Банкетовъ Зал Торжеств
Банкетовъ Зал Торжеств
66 438
Лучший ответ
Алексей Скляр даже трудно найти. а как появится так сразу трагедия. при этом, всякие OpenSSL имеют сотни goto. zstd имеет. И никаких вопросов к этим библиотекам.
Сложная функция, требующая goto - в 99.9% ошибка дизайна кода. Разбиваем одну сложную функцию на несколько более простых - и надобность в goto волшебным образом исчезает. А сам код - при нормальном наименовании функций - становится более понятным.

И, да - проблему выхода из вложенных циклов это тоже решает. А в языках с многоуровневыми break / continue такой проблемы вообще нет.

Да, бывают редкие случаи, когда goto реально нужен (особенно в языках без встроенных механизмов обработки ошибок). И тут главное - соблюдать одно простое правило: никогда не делать goto назад по коду. Когда ты делаешь goto только вперёд (вниз, по ходу чтения кода), проблем обычно не возникает. Но как только ты начинаешь делать goto назад (вверх, против направления чтения кода) - код превращается с нечитаемый спагетти.

P.S. У тебя времени нет. А у твоих коллег, которые позже будут читать и модифицировать твой код, время есть? Почему они должны тратить свои время и силы из-за того, что тебе влом написать качественный код? В своих пет-проектах ты можешь писать что угодно и как угодно. Но если ты работаешь в команде, твоя обязанность - писать хорошо читаемый и легко модифицируемый код - даже если на это уйдёт больше времени (неправда - при наличии опыта код без goto пишется столь же быстро, что и код с goto).
Гена Вакульчик
Гена Вакульчик
94 110
Любишь жареное гoвнo?
Сергей Закорко
Сергей Закорко
69 274
Какой школьник не любит быстрого гото?
в исходниках Linux более 180 тысяч goto. всему есть место.
Сергей Секунов
Сергей Секунов
43 176
> Интересно как всезнайки выходят из вложенных циклов без goto
 [&]() {
for (...) {
for (...) {
...
if (...) {
return;
}
...
}
}
}
НЛ
Никита Лягин
36 952
Николай Демидов брейки кажется везде есть
Такими вопросами занимается наука философия.
Эта наука с помощью научных методов помогает создать идеологию.
Идеология это идеи + логика т.е. идеи которые проверяются с помощью логики на наличие ошибок.
С сильной и хорошей идеологией можно разработать*- правила**, культуру*** и дизайн проекта****.
(*создать с помощью работы; **паттерны проектирования; ***допустимые границы; **** удобную совместную работу частей)

Твой вопрос это вопрос культуры кода. Культура как и всегда применяется в рамках какого либо сообщества и ее нарушение приводит к ее снижению. т.е. по сути ты хочешь нарушить культуру проекта ради уменьшения времени на разработку.
И вот тут возникает вопрос стоит ли снижение уровня культуры сообщества получаемым выгодам для одного участника сообщества.
Это достаточный повод поработать над идеологией проекта т.е. взять идею "Вася Пупкин использует goto и повышает свою производительность" и проверить ее с помощью логики приводя аргументы за и против.
"Из-за того что какой-то чудак чего-то начитался мне теперь придётся трахаться с
Вместо 2х строк кода надо делать 10 "лаконичных логичных и т.д.""

не фантазируй. Не сиди в иненте.
Читай умные книги и учись программированию.
От воплей в вопросах никакой помощи.
Андрей Игнатов есть, можно успокоиться
Это скорее личные предпочтения. Каждый программирует в меру своего понимания, привычной стилистики, своих предпочтений. Если навязывается определенная стилистика (дизайн) кода заказчиком в ТЗ, то тут ничего не попишешь, надо следовать заданию. Но вот в команде, такие вещи стоит согласовывать, и аргументированно обосновывать, иначе будут конфликты. И это касается не только стиля, но и выбора инструментов для разработки. Видел, как с пеной у рта доказывали программеры в одной команде, что для сайта визитки надо сразу использовать Yii, т.к. в будущем проект может разрастить и потребуется функциональность заложенная во фреймворке... Тут даже не до goto, вопрос слишком принципиальный :)
OK
Orifjon Komiljonov
8 866

Похожие вопросы