Re[21]: JetBrains
От: mgu  
Дата: 18.04.16 00:30
Оценка:
Здравствуйте, so5team, Вы писали:

S>Суть была в том, что AlexGin показывал, что его опыт нельзя назвать устаревшим. Но делал это несколько странно, на что ему и было указано. Но тут появляетесь вы, пытаетесь доказать, что главное -- это не знание каких-то там деталей, а приобретенный годами опыт. При этом демонстрируя замечательную невежественность в вопросах, которые мы с AlexGin обсуждали.


Ну не знаю я С++11, это и есть "замечательная невежественность"?

S>Ваше мнение по поводу стандарта C++ и уровня его поддержки в современных компиляторах очень ценно.


Таки полностью не поддерживается:
https://msdn.microsoft.com/ru-ru/library/hh567368.aspx

S>Могу попросить объяснить, что не понравилось в этих двух фрагментах?


S>В первом фрагменте прошу учесть, что demands -- это переменная типа unsigned int. Надеюсь, ваш уровень знаний C++ позволяет понять, чем грозит переход через 0 при декрементах unsigned значений?


mgu>>
mgu>>if( demands < 3 )
mgu>>    demands = 1;
mgu>>else
mgu>>    demands -= 2;
mgu>>


Я просто имел в виду тернарную операцию (входит даже в пещерные стандарты С++).

S>Ну а к этому в чем претензия? Особенно с учетом того, что это часть описания класса?


mgu>>
mgu>>    unsigned int m_current_position = 0;
mgu>>    bool m_current_tick_processed = false;
mgu>>


Виноват, я был слишком высокого мнения о создателях С++11: думал, что раз они содрали инициализацию динамических членов класса, то догадаются их инициализировать по умолчанию. Ан нет.

S>Почему при этом вы попытались заострить внимание на вызовах unlock и lock -- это загадка. Если поясните, будет интересно.


mgu>>
mgu>>    lock.unlock();

mgu>>    while( head )
mgu>>    {
mgu>>        try
mgu>>        {
mgu>>            ...
mgu>>        }
mgu>>        ...
mgu>>        catch( ... )
mgu>>        {
mgu>>            ...
mgu>>            std::abort();
mgu>>        }

mgu>>        head = head->m_next;
mgu>>    }

mgu>>    lock.lock();

mgu>>


Во-первых, крайне необычно сначала разблокировать, а затем блокировать, напрашивается обратный порядок, возможно, на то были причины. А std::abort() выкидывает без всяких очисток, это потенциальная мина, возможно, понадобится закрывать ресурсы или выбрасывать новое исключение в глобальный обработчик, а перед этим восстанавливать загадочный lock(). В общем, надо что-то делать либо с финализацией, либо при ошибке выставлять локальный флаг и выходить из while.

mgu>>Иначе в файле all.hpp (3000+ строк) вы бы не попадали по ползунку полосы прокрутки


S>В vim-е нет полосы прокрутки.


А в других редакторах есть.

S>Кроме того, вы наверняка не видели sqlite.c и не слышали про такую технику, как amalgamation.


Не слышал, ознакомился, понял, что иногда сталкивался с подобной необходимостью, но термина не знаю. Зато с многотысячестрочными простынями (точнее, сари) имел дело. Предпочитаю вместо иллюзорного выигрыша в производительности делать разбиение на логические единицы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.