Информация об изменениях

Сообщение Re: Тестовое задание ... от 12.06.2015 22:21

Изменено 12.06.2015 22:22 tlp

Здравствуйте, Selavi, Вы писали:

S>...выполнено слабо

S>К сожалению, добиться обратной связи на тему "что именно слабо" не удалось.

S>Пожалуйста, покритикуйте реализацию.


1. комментариев нет от слова совсем

2.

int Size()
{
std::lock_guard<std::mutex> lock(this->mutex);

return container.size();
}

вместо int должен быть хотя бы size_t

3. TaskDer зачем-то засунут в Task.h

4. Смысл существования task.cpp непонятен, возникает вопрос понимает ли автор, что он делает. (хотя, наверное, это следствие п. 3)

5. использование голых указателей и C++0x в одном проекте. Трусы или крестик.

6.

CWorkThread::CWorkThread(IFinishClientTask *clientTaskFinisher)
: terminated(false)
, thread(&CWorkThread::ThreadFunc, this)
{
this->clientTaskFinisher = clientTaskFinisher;
}

непонятно зачем частично инициализируем обьект в init list, частично в теле конструктора.

7. Класс, в котором есть голые указатели (использование голых указателей и C++0x это вообще что-то, напонимающее анекдот про трусы и крестик) и отсутствие для этого класса copy ctor и operator=

8. \r\n вместо std::endl

9. Библиотечные классы, выводящие debug-данные на консоль без возможности отключения.

10. "не должно быть подвисших клиентов даже если клиентов больше, чем потоков" — требование, которое невозможно соблюсти в текущей формулировке задания и API. Ваш код и комментарии не говорят об этом ни слова, вместо этого вы придумали эвристику, которая не работает.
Re: Тестовое задание ...
Здравствуйте, Selavi, Вы писали:

S>...выполнено слабо

S>К сожалению, добиться обратной связи на тему "что именно слабо" не удалось.

S>Пожалуйста, покритикуйте реализацию.


1. комментариев нет от слова совсем

2.

int Size()
{
std::lock_guard<std::mutex> lock(this->mutex);

return container.size();
}

вместо int должен быть хотя бы size_t

3. TaskDer зачем-то засунут в Task.h

4. Смысл существования task.cpp непонятен, возникает вопрос понимает ли автор, что он делает. (хотя, наверное, это следствие п. 3)

5. использование голых указателей и C++0x в одном проекте. Трусы или крестик.

6.

CWorkThread::CWorkThread(IFinishClientTask *clientTaskFinisher)
: terminated(false)
, thread(&CWorkThread::ThreadFunc, this)
{
this->clientTaskFinisher = clientTaskFinisher;
}

непонятно зачем частично инициализируем обьект в init list, частично в теле конструктора.

7. Класс, в котором есть голые указатели и отсутствие для этого класса copy ctor и operator=

8. \r\n вместо std::endl

9. Библиотечные классы, выводящие debug-данные на консоль без возможности отключения.

10. "не должно быть подвисших клиентов даже если клиентов больше, чем потоков" — требование, которое невозможно соблюсти в текущей формулировке задания и API. Ваш код и комментарии не говорят об этом ни слова, вместо этого вы придумали эвристику, которая не работает.