Anonymous
насчет умных указателей, я в них умею, но бытовало мнение что в маленьких проектах не обязательно их
🦥Alex Fails
сырые указатели надо уметь готовить прост
Igor
их обязательно всегда и везде где чешутся руки написать new
Igor
разве что ты писатель библиотеки и тебе вот прямо позарез нужно обойтись без них
Anonymous
понял. Записал) Да будет так
Egor
насчет умных указателей, я в них умею, но бытовало мнение что в маленьких проектах не обязательно их
Да их везде необязательно, хоть на C можно писать. Но они скорее помогают избегать багов и явно документируют поведение программы. Например: https://herbsutter.com/2013/06/05/gotw-91-solution-smart-pointer-parameters/
Igor
//а ещё ну вообще не ожидал увидеть эту аватарку хоть где-нибудь, но это так, оффтоп :3
Anonymous
вот еще важный вопрос. Если число используется один раз. Его все равно надо заранее записать ввиде переменной или задефайнить , иль не обязательно?
🦥Alex Fails
смотря для какой цели. Обычно всякие циферки с семантикой лучше константами делать, да
Vitaliy ◀️TriΔng3l▶️
А комментарий оставить?
Igor
лучше вменяемое имя дать
🦥Alex Fails
смотря для какой цели. Обычно всякие циферки с семантикой лучше константами делать, да
а если не использовать именнованные константы, то такой случай называется "магическими числами" и считается антипаттерном
Anonymous
А комментарий оставить?
не гневный и без матов)
Vitaliy ◀️TriΔng3l▶️
не гневный и без матов)
с английским ругательством?
Anonymous
так а это... мне работу можно искать? Джуном иль стажером хотя б. Войти в IT охото
Igor
allocate(MAX_FRAMEBUFFER_SIZE) лучше чем allocate(FRAMEBUFFER), но хуже чем allocate(MAXIMAL_ALLOWED_FRAMES_IN_FRAMEBUFFER_ON_HI3521_BOARD)
Anonymous
с английским ругательством?
только с оригинальным если. Не fuck какой нибудь
Igor
ну а вообще, комментарий должен пояснять не "что происходит", а "почему происходит"
🦥Alex Fails
🦥Alex Fails
надо вставить блоб с этой гифкой
Igor
ну а вообще, комментарий должен пояснять не "что происходит", а "почему происходит"
если комментарий вида "что происходит" можно выделить в отдельную функцию, пусть и вызываемую единожды - do it RECT size = get_minimal_screen_size(buffer.size, screen_size) лучше чем //here we get screen size that allows us to work к сожалению, единого мнения на эту тему среди программистов нет :(
🦥Alex Fails
тут вчера кидали на тему inline статью. Антон еще рассказывал в докладе, что оно не работает и игнорится современными компилями. Даже если оно forceinline
Vitaliy ◀️TriΔng3l▶️
И в Clang, и GCC
🦥Alex Fails
ну ща найду доклад...
Vitaliy ◀️TriΔng3l▶️
https://blog.tartanllama.xyz/inline-hints/
Igor
"разработчиков компилятора настолько достали разработчики, пишущие forceinline, что они сделали компилятор кидать ошибки на его использование" (с) Полухин
🦥Alex Fails
Антон Полухин, Как делать не надо: C++... - YouTube www.youtube.com 005. Немного магии для C++14 — Антон Полухин - Продолжительность: 37:05 Разработка 3 941 просмотр.
Alexander "SonnySlave"
ну ща найду доклад...
не игнорится же, там не так было
🦥Alex Fails
не игнорится же, там не так было
поправь меня тогда, плз
Alexander "SonnySlave"
компилятор просто может принять твою оцнеку во внимание. Ссылку выше уже кинули на бложик
Igor
вроде тут, если не путаю
здесь, здесь, 32 минута
Andrey
На правах полезного спама. разыскиваются книги Михаила Балкарова, посвященные ЦОД, а именно «Электроснабжение серверных и ЦОД», «Охлаждение серверных и ЦОД», «Инженерные системы ЦОД» расходы на пересылку компенсирую. Книги издавало издательство Украины (вероятно), может там есть зацепки. https://vk.com/a.ustinovich?w=wall2513729_1709 Здесь есть иллюстрации
Igor
Igor
пытаюсь выслушать дословную цитату)
Vitaliy ◀️TriΔng3l▶️
Если вижу, что что-то явно проще, чем сохранение контекста, call, ret и восстановление, пишу forceinline
Igor
https://youtu.be/rJWSSWYL83U?t=2149 во, с таймлайном
Vitaliy ◀️TriΔng3l▶️
Для геттеров-сеттеров
Vitaliy ◀️TriΔng3l▶️
Или я наркоман?
Vitaliy ◀️TriΔng3l▶️
Что за компилятор-то с проверкой на 3 строчки?
Alexander "SonnySlave"
Vitaliy ◀️TriΔng3l▶️
Слушаю ту лекцию, и в очередной раз убеждаюсь, что C++ — это минное поле :D
🦥Alex Fails
так и есть
🦥Alex Fails
все компьютерные хуитки - минное поле
🦥Alex Fails
еще большее минное поле
Vitaliy ◀️TriΔng3l▶️
еще большее минное поле
Ну хоть не надо заботиться об этих noexcept
🦥Alex Fails
кмк забота о ручной очистке еще противнее чем noexcept
Igor
Ну хоть не надо заботиться об этих noexcept
вместо них ты заботишься о malloc/free, open/close, делаешь goto и do{}while(0) я искренне хз, что лучше
Vitaliy ◀️TriΔng3l▶️
А если -fexceptions не включать, штуки типа bad_alloc — это 100% вылеты?
Vitaliy ◀️TriΔng3l▶️
Вопрос уровня supapro, конечно, наверно
Vitaliy ◀️TriΔng3l▶️
Или new может nullptr вернуть тогда?
Vitaliy ◀️TriΔng3l▶️
Вообще, хотелось бы такую фичу, исключения как бы оставить, но подсказать компилятору, что все исключения будут фатальными, приведут к какому-нибудь мессаджбоксу и экзиту, и всё можно считать noexcept
🦥Alex Fails
Или new может nullptr вернуть тогда?
он может вернуть, только если ты делаешь так: Huita *huita = new(std::nothrow) Huita();
Vitaliy ◀️TriΔng3l▶️
И пофиг, если какой-нибудь другой поток, пока программа ещё не закрылась, приведёт к double-triple-quadruple fault
Vitaliy ◀️TriΔng3l▶️
он может вернуть, только если ты делаешь так: Huita *huita = new(std::nothrow) Huita();
Даже если исключения вообще не включены при компиляции?
Igor
Или new может nullptr вернуть тогда?
про new не помню, но у нас при 512 метрах оперативки malloc(1024*1024*1024*1024) может вернуть тебе не нулевой указатель на здоровенный блок памяти, и при попытке обратиться по нему слишком далеко ты грохнешься с сегфолтом
🦥Alex Fails
Даже если исключения вообще не включены при компиляции?
если не включены, у тебя там аборт будет (емнип).
Vsevolod
а как связана оперативка и то, сколько можно выделить памяти в программе?
Vsevolod
какими-то вы досовскими понятиями живете
RattenKong 🦧🐀🦍️
он может вернуть, только если ты делаешь так: Huita *huita = new(std::nothrow) Huita();
а можно что то вроде auto huita = new (buffer) (std::nothrow) Huita()? А то на цппреференсе непонятно что то
Vsevolod
зачем при placement alloc nothrow?
Igor
какими-то вы досовскими понятиями живете
совершенно не спорю, но что должно произойти при выделении памяти больше чем физически есть в системе, при отсутствии свопа?
🦥Alex Fails
а можно что то вроде auto huita = new (buffer) (std::nothrow) Huita()? А то на цппреференсе непонятно что то
это placement new. Он использует твой buffer как область для размещения нового объекта
Vsevolod
@Artalus зависит от ОС
Vsevolod
и, например, от vm.overcommit в линупсе
Vitaliy ◀️TriΔng3l▶️
это placement new. Он использует твой buffer как область для размещения нового объекта
А noexcept или не noexcept конструктор вызовется, зависит от того, noexcept ли вызывающая функция?
Alexander "SonnySlave"
какими-то вы досовскими понятиями живете
и тут до людей доходит понятие "виртуальная память"... 😊