- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Connection::Connection(const Options& opts): impl_(new Impl)
{
impl_->isInitialized = false;
impl_->options = std::move(*opts.impl_);
if (!options().lazyInit)
conn();
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+145
Connection::Connection(const Options& opts): impl_(new Impl)
{
impl_->isInitialized = false;
impl_->options = std::move(*opts.impl_);
if (!options().lazyInit)
conn();
}
Вся соль в строке 4: из объекта opts, переданного по константной ссылке, подло выжимают содержимое. Видимо, никто не пробовал создать два коннекта из одного объекта опций.
Soul_re@ver 28.10.2014 22:18 # 0
roman-kashitsyn 28.10.2014 23:12 # 0
guest 28.10.2014 23:49 # −7
Dummy00001 29.10.2014 00:07 # 0
там делаются миллионы соединений в секунду, почему кто-то и подумал что std::move() будет хорошей идеей, что бы съэкономить не копировании?
"premature optimization" в ее чистой форме.
roman-kashitsyn 29.10.2014 13:12 # +1
Просто не нужно делать этого, нарушая логическую константность.
Правильным подходом было бы передавать входной параметр по значению. Тогда бы ни у кого не возникало иллюзий.
guest 29.10.2014 01:12 # −7
guest 29.10.2014 19:33 # −3
miwomare 25.08.2021 07:30 # 0