The OpenNET Project / Index page

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



"Релиз языка программирования Go 1.8"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Релиз языка программирования Go 1.8" +/
Сообщение от Orduemail (ok), 17-Фев-17, 22:17 
>> return из середины функции -- это плохо
> Может так и есть, но ведь так удобно! :) Выяснил, что больше
> делать нечего, и до свиданья.

Ну, много чего есть удобного, что потом может выйти боком. Для этого и придумывают всякие CodingStyle, чтобы ограничить программиста в том, какие глупости он может совершить.

> И, продолжая минутку юмора, если не
> делать ранних return-ов, может получиться вот так: https://pbs.twimg.com/media/Bp1IyS7CYAATIEB.jpg
> :)

:)
Да, я сталкивался с таким. Причём в C коде. Причём авторства IBM. Но там было хуже, там вперемешку десятками вкладывались if, for, while... И отступы по два пробела. Здесь-то однотипные проверки, которые можно раскидать по функциям и вызывать их в цикле, а можно и ничего не делать -- и так в общем-то понятно что происходит. Но в том драйвере флоповода был просто вынос мозга. Причём не в одном каком-то месте, а постоянно.

> Нашёл другое:
> The different kinds of Java memory leaks and how to analyze them
> https://www.dynatrace.com/resources/ebooks/javabook/memory-l.../

Спасибо.

> Один из разделов, кстати, называется "Circular and Complex Bi-Directional References".

Там не memleak. Или, если очень хочется, то memleak, но не в строгом понимании этого слова -- всё совершенно законно. Если мы храним Node, а Node зачем-то хранит Document, то память доступна приложению. Удаление нода приведёт к удалению Document. То есть это наверное неудобно для кодера -- ему надо для отлавливания таких штук понимать, как работает API, которым он пользуется, но я не вижу что с этим можно сделать, со сборщиком мусора или без него. Хотя... lifetimes и borrowing позволяют творить чудеса... может и можно спроектировать API так, чтобы если не решить проблему вообще, то хотя бы ограничить её рамками lifetime'а переменной, хранящей Document. Может быть даже удастся обойтись без сборки мусора (и без gc, и без счётчика ссылок) для последующего освобождения памяти Node.
Но, соглашусь, lifetime/borrowing это уже не GC, а другой способ решения проблемы.

> Ну и на гугле, и на ютубе тоже, на эту тему много.

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

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

Оглавление
Релиз языка программирования Go 1.8, opennews, 17-Фев-17, 13:03  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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