The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Локальная уязвимость в ядре Linux, эксплуатируемая через nftables , opennews (??), 26-Дек-23, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


91. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +3 +/
Сообщение от Аноним (210), 26-Дек-23, 16:07 
Какой ещё while? Один из таких спецалистов однажды на кодревью заменил мои goto чем-то типа
f = openResource();
if (!f)
{
    return false;
}

g = openAnotherResource();
if (!g)
{
    closeResource(f);
    return false;
}

h = openThirdResource();
if (!h)
{
    closeAnotherResource(g);
    closeResource(f);
    return false;
}

doSomeJob(f, g, h);

closeThirdResource(h);
closeAnotherResource(g);
closeResource(f);
return true;

На замечание о дублировании кода блеял что-то невнятное, что лучше так, чем goto.
Ответить | Правка | Наверх | Cообщить модератору

99. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +2 +/
Сообщение от Аноним (-), 26-Дек-23, 16:42 
Я бы тоже спросил зачем он дублирует. Можно написать и без goto и без дубляжа.
Ответить | Правка | Наверх | Cообщить модератору

168. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (3), 26-Дек-23, 21:52 
Потому что индусам платят за строчки?
Ответить | Правка | Наверх | Cообщить модератору

191. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +/
Сообщение от Аноним (210), 26-Дек-23, 23:33 
Можно пример?
Ответить | Правка | К родителю #99 | Наверх | Cообщить модератору

217. "вариант без goto, повторов и функций"  +/
Сообщение от Панорамикус (?), 27-Дек-23, 03:40 
f = openResource();
if (f)
{
  g = openAnotherResource();
  if (g)
  {
    h = openThirdResource();
    if (h)
    {
      doSomeJob(f, g, h);
      closeThirdResource(h);
      rc = true;
    }
    else
    {
      rc = false;
    }
    closeAnotherResource(g);
  }
  closeResource(f);
}
else
{
  rc = false;
}
return rc;
Ответить | Правка | Наверх | Cообщить модератору

218. "вариант без goto, повторов и функций"  +1 +/
Сообщение от Аноним (210), 27-Дек-23, 05:31 
1. Читабельность вашего решения насктолько хороша, что вы же сами запутались, где надо возвращать true, а где false. Оно и понятно, лесенка из else-ов в конце функции не слишком читабельна.
2. Основной код функции (в данном случае вызов doSomeJob) находится на четвёртом уровне вложенности. То есть с нормальной настройкой отступов левая половина окна редактирования будет пустовать. То есть всё то, с чем люди боролись десятилетиями, чтобы код не разъезжался в стороны, вы одним махом обнулили.
3. В реальном коде вместо doSomeJob() будет пара десятков строк кода. Это ОСНОВНОЙ код функции, ради которого всё и затевалось, но у вас оно почему-то спрятано за 4 уровнем отступа. Кроме того, дойдя до завершающих else, читающему код придётся поворачивать монитор на 90 градусов и прикладывать к нему линейку, чтоб понять, какой из else какую развилку завершает. Кстати, ваш способ используется в Битриксе (российская система управления сайтами), и могу вас заверить, такой вариант, когда основной код имеет глубокую вложенности, а потом ещё завершается мутными rc = false, не шибко читаем.
4. Вы пишете, что код без повторов, но с завидным упорством повторяете else { rc = false; } .
Ответить | Правка | Наверх | Cообщить модератору

240. "вариант без goto, повторов и функций"  +/
Сообщение от Панорамикус (?), 28-Дек-23, 03:38 
В приведённом мной примере есть куда более серьёзная проблема, но вы её почему-то не упомянули.

Вы написали много слов про форматирование, хотя можно было сказать кратче: "Мне так не нравится". Ваши претензии к форматированию интересны... Вы пишете свой код в Notepad? Да, и с чего вы взяли, что это мой стиль? Отформатировано в стиле автора примера кода с повторами.

Вам не нравятся мои повторы "rc = <boolean>;", но вы почему-то не против своих повторов "goto ...;". Нестыковочка.

Хорошо структурированный код подталкивает к переносу повторяющихся паттернов в макросы, это значительно уплотняет код.

P.S. Ваш апломб, да в мирных бы целях...

P.P.S. Мне не совсем интересен этот спор, да и времени жалко. Успехов!

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

185. "Локальная уязвимость в ядре Linux, эксплуатируемая через nft..."  +1 +/
Сообщение от Tron is Whistling (?), 26-Дек-23, 22:59 
Это да, вот такие вот перлы обычно и получаются...
Ответить | Правка | К родителю #91 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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