Re[20]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 21:46
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Суть от этого не меняется: то, что узкому специалисту по С++ кажется откровением свыше, давно используется в других языках.


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

S>>В качестве подсказки: когда речь идет о C++11, то это не версии Visual C++. Это ISO-шный стандарт C++ от 2011-го года.


mgu>Да-да-да, как и HTML5, который везде требуется, вот только ничем полностью не поддерживается, так что приходится писать с диалектными особенностями.


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

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


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

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

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


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

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


А вот тут я должен пояснить. Внутри while вызываются заданные пользователем callback-и. К callback-ам предъявляется требование -- они не должны выпускать наружу исключения. Но в C++ пока нет синтаксических конструкций, которые бы позволяли сделать такое ограничение более формальным (спецификатор noexcept в C++11/14 не является частью сигнатуры функции, кроме того, в обсуждавшемся выше по ветке MSVS2013 его вообще нет). Посему приходится выполнять вызов callback-а внутри try-catch, дабы при возникновении исключения прервать выполнение программы из-за нарушения контракта. Отсюда и вызов std::abort.

Почему при этом вы попытались заострить внимание на вызовах 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>


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


В vim-е нет полосы прокрутки. Кроме того, вы наверняка не видели sqlite.c и не слышали про такую технику, как amalgamation.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.