2011-10-12

битфилдшоке

Месяц назад мне передали два проекта.
с тех пор битфилдшоке.

1. Небольшое виндовое клиент-серверное приложение.
  • Цикл обработки сообщений от клиента занимает 6000 строк. Одной функцией.
    Внутри процветает Копи-паста.
    Разбил на функции, вынес обшие участки -- уже уменьшил до 3клок. В планах - уменьшить еще раза в полтора. И это только одна функция, пусть и самая большая.
  • Несколько потоков, но ресурс, разделяемый между ними, лочится на каждый чих, даже на чтение.
  • Несколько классов, используемых как пространства имен. В классе нет и полей данных, ни виртуальных функций. Он ни от кого и никем не наследуется. Просто 5-6 нестатических функций, иногда связанных по смыслу, а иногда и нет. Класс CUtils, куда добавляются все функции, используемые больше одного раза.
1. Линуксовый демон, который управляется через dbus.
  • Написан на Qt!
  • C графическим инсталлятором!
  • В целом код неплохого качества, хотя иногда и попадаются функции на 300-500 строк.
  • в коде - Qt головного мозга. Хотя, может, это с непривычки, но с трудом пробираюсть через сплошные connect, emit, SLOT и SIGNAL.
  • для синхронизации потоков используется... pipe. Рабочий поток висит на select-е, гуй получает данные через Qt-шный сокет, ложит их в буффер, и пишет в пайп 1, если все ок, или 0, если ошибка.