Попинайте тестовое задание
От: Qt-Coder  
Дата: 09.09.14 08:42
Оценка: 1 (1)
Проходил отбор в одну компанию в Москве на удаленку.
Дали тестовое задание, выполнил, получил следующий ответ:

1. В сетевом коде ошибка, показывающая недостаток опыта в сетевом программировании.
2. В целом проект неопрятный, не имеет никакой внятной архитектуры и оформления. Это серьёзная проблема при работе на удалёнке.


По первому пункту согласен, это так, а вот второй вызвал непонимание.
Что не так?
Задание
  Скрытый текст
Фонарь (тестовое задание)

Требуется написать управляемый по сети фонарь. Команды управления фонарь
принимает от сервера фонаря. Предполагается, что реализация сервера уже
существует (однако недоступен вам в процессе разработки клиента фонаря).

Фонарь и сервер общаются по Протоколу Управления Фонарем, работающему поверх
соединения TCP.

Протокол Управления Фонарем (ПУФ) устроен следующим образом. Для изменения
состояния фонаря сервер передает ему команду управления. Все команды
кодируются в виде TLV (http://en.wikipedia.org/wiki/Type-length-value), при
этом поле type имеет размер 1 байт, поле length — 2 байта и поле value —
length байт. Все данные передаются по сети в Big Endian.

ПУФ версии 1 описывает три команды:
● ON (включить фонарь): type = 0x12, length = 0
● OFF (выключить фонарь): type = 0x13, length = 0
● COLOR (сменить цвет): type = 0x20, length = 3, value интерпретируется как
новый цвет фонаря в RGB.
Предполагается, что в будущих версиях ПУФ могут появляться новые команды,
однако структура TLV останется неизменной.

Реализация фонаря должна удовлетворять следующим требованиям:

1. При запуске фонарь должен запрашивать хост:порт (по умолчанию
127.0.0.1:9999), подсоединяться по TCP и после этого начать отрабатывать
протокол управления.

2. При получении данных от сервера фонарь собирает целые команды (type +
length + value) и, если type известен, обрабатывает команду, иначе молча ее
игнорирует.

3. При получении команды ON фонарь включается (отрисовку фонаря оставляем
на ваше усмотрение).

4. При получении команды OFF фонарь выключается.

5. При получении команды COLOR фонарь меняет цвет.

6. При завершении работы фонарь корректно закрывает соединение с сервером.

7. Реализация фонаря позволяет легко добавлять любые новые команды.

Проработанность обработки исключительных ситуаций (ошибки установления

соединения, обрывы соединения) — на ваше усмотрение.

Технологические требования:

1. Задание принимается в виде исходников, готовых к сборке в QtCreator или с
помощью Make-файлов под Linux.

2. Код должен быть написан по Qt Coding Style.

3. Репозиторий с кодом должен быть доступен на Bitbucket или Github.


Проект выложил на https://github.com/lazyrun/lampclient.git
Для тестового проекта не придавал большого значения архитектуре, да и честно говоря не знаю, что тут придумывать. Может быть надо было сконструировать какой-то хитрый велосипед типа фабрики фонарей?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.