The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Разработчики OpenBSD представили криптографическую библиотек..."
Отправлено PereresusNeVlezaetBuggy, 04-Июн-18 09:10 
> О чем пост то? Каким образом goto коррелирует к ООП?

Таким, что в ООП-языках сама потребность в goto крайне низкая. Навскидку, в последних двух проектах на C++, которыми занимался, мне ни разу даже в голову не пришло использовать goto. В то же время в C — сплошь и рядом.

> Семантика циклов для C/C++/JAVA - одинакова.
> if/break, while/break, for/break - в этом случае выход из цикла в одной
> точке. И все логика алгоритма линейно просматривается.

В Java нет goto (хотя есть некоторое приближение с continue/break), во всяком случае, в нынешнем её виде (AFAIK, изначально тов. Гослинг такую штуку сделал, но потом отказался). Так что сравнение не совсем корректно. :) Но дело не в циклах, а прежде всего — в автоматических переменных. При выходе из области видимости у объектов в C++ начинают срабатывать деструкторы, которые могут освобождать ресурсы (память, блокировки и т.д.). Поэтому в C++ можно в большинстве случае просто влупить return. В C такого, по определению, нет, и всё надо освобождать-подчищать заново. И паттерн вида «if ((buf = malloc(size)) == NULL) goto err;» очень даже улучшает читаемость и (да простят мне не проснувшемуся это слово) сопровождаемость кода.

> А если у тебя в цикле по условиям goto напиханы - например
> один выходит на инициализацию/начало цикла, второй где-то внутри цикла переходит, третий/четвертый
> выходит из цикла куда захочет - вот тут начинается бардак и
> катастрофа.
> Так же из бардака - это переход по goto части кода, вперед,
> а потом по какому-то условию возврат в пропущенную часть.
> И этот бардак справедлив как для С так и для C++

Полностью согласен. Но речь-то изначально была не об этом, а о том, что в силу особенностей языка в C использование goto — обыденность. Как и любым инструментом, им можно сделать хорошо, а можно — не очень.

Г-н Vitto74, которому я отвечал, как раз привёл пример уместности goto — или вы эту уместность как раз хотите оспорить?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру