The OpenNET Project / Index page

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



"Разработчики OpenBSD представили криптографическую библиотек..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Разработчики OpenBSD представили криптографическую библиотек..." +2 +/
Сообщение от PereresusNeVlezaetBuggy (ok), 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 — или вы эту уместность как раз хотите оспорить?

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Разработчики OpenBSD представили криптографическую библиотек..., opennews, 04-Июн-18, 00:18  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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