Думаю, Вы правы, мало приятного, когда смотрят, как ты работаешь.
Так что если результат хороший или даже удовлетворительный — лучше пользоваться другими мерами, чем заглядывание в код со спины.
Обычно это люди, которые выбирают профессию программиста ради большой ЗП.
Соответственно, обычно они не мотивированы к обучению вообще, и являются кодерами ниже среднего уровня. IMHO, таких людей надо увольнять. Объясняя при этом, что они пытаются заниматься не своим делом.
Да почему ж ) мне лично симпатизирует подход с выводом типов, когда не нужно их везде описывать, где можно понять из контекста. Однако при это необходима строгая типизация, чтобы при двусмысленном результате требовалось явное типизирование. Тогда проблем не будет, только плюсы.
Автоматическое форматирование, конечно, помогает, но не во всем, увы.
Некоторые вещи после автоформатрования приходится доформатировать ручками, ибо иначе плохо читается.
template<class TYPE>
void LockFreeQueue2<TYPE>::Enqueue(TYPE* data)
{
...
if (writerTop) // Если очередь Писателя уже существует, добавляем елемент в ее конец
{
// Здесь сейчас первый поток
writerBottom->next = data;
writerBottom = data;
}
...
}
template<class TYPE>
bool LockFreeQueue2<TYPE>::Dequeue(volatile TYPE*& data)
{
...
if (isWriterFinished && writerTop) // Проверяем Писетельскую очередь, если он закончил свою работу
{
readerTop = writerTop;
// Здесь сейчас второй поток
writerTop = NULL;
}
}
template<class TYPE>
bool LockFreeQueue2<TYPE>::Flush()
{
...
if (!readerTop) // Проверяем можно ли сбросить Читателю свой остаток
{
// Здесь сейчас третий поток
readerTop = writerTop;
return true;
}
}
Принцип Keep It Simple. Не имеет смысл городить Builder'ы, когда можно обойтись интерфейсами. Они проще в понимании, особенно когда данное решение рассматривается в контексте проекта.
Так что если результат хороший или даже удовлетворительный — лучше пользоваться другими мерами, чем заглядывание в код со спины.
Соответственно, обычно они не мотивированы к обучению вообще, и являются кодерами ниже среднего уровня. IMHO, таких людей надо увольнять. Объясняя при этом, что они пытаются заниматься не своим делом.
Видел я и CSS-файлы на 4000 строк…
ДО сборки, есс-но. Вся верстка в одном файле.
Не помню, кто сказал:
Некоторые вещи после автоформатрования приходится доформатировать ручками, ибо иначе плохо читается.
Вот пример:
template<class TYPE> void LockFreeQueue2<TYPE>::Enqueue(TYPE* data) { ... if (writerTop) // Если очередь Писателя уже существует, добавляем елемент в ее конец { // Здесь сейчас первый поток writerBottom->next = data; writerBottom = data; } ... } template<class TYPE> bool LockFreeQueue2<TYPE>::Dequeue(volatile TYPE*& data) { ... if (isWriterFinished && writerTop) // Проверяем Писетельскую очередь, если он закончил свою работу { readerTop = writerTop; // Здесь сейчас второй поток writerTop = NULL; } } template<class TYPE> bool LockFreeQueue2<TYPE>::Flush() { ... if (!readerTop) // Проверяем можно ли сбросить Читателю свой остаток { // Здесь сейчас третий поток readerTop = writerTop; return true; } }Не могу сказать, что это неполезно.
И почему только при этом нет понимания, что человеку будет как минимум влом копаться в этом?
Очень хороший взгляд на эту проблему изложен в этой книге.
Si, amigo!
Много воды на одно смысловое заключение.
Только не в том случае, когда происходит race condition.