Давно хочу разобраться во внутренностях TuxGuitar. В принципе неплохой редактор табов (и я его достаточно регулярно использую), но у него есть ряд заметных недостатков. Самые заметные для меня - это отсутствие нормальной нотации для ударных и проблемы с midi-бэкендами, из которых более-менее нормально работает только Gervill (а охота иметь дело с jack).
В прошлом я пару раз пытался сунуться в код, но его запутанность меня отпугивала. В коде присутствует множество циклических зависимостей (например, какие-нибудь TGNote и TGFactory зависят друг от друга), комментарии встречаются редко (и в основном на испанском), юнит-тесты отсутствуют как класс, по крайней мере в репозитории (и это неудивительно, учитывая запутанность кода), некоторые подпроекты не компилируются вовсе.
В общем, пациент довольно плох, и желаемые фичи крайне трудно добавить без кардинальной реорганизации кода. Видимо, в первую очередь придётся заняться рефакторингом. Получится этакая разминка на время отпуска.
Мой план достаточно прост:
1. Покрываем код проекта юнит-тестами, желательно, поплотнее.
2. Аккуратно применяем приёмы рефакторинга для распутывания системных зависимостей.
3. Когда код становится достаточно чист, добавляем нужные фичи.
Работы достаточно много, но время у меня пока что есть. Разумеется, если из моей затеи хоть что-нибудь дельное выйдет, надо будет выложить наработки в публичный доступ. Увы, но с учётом масштаба необходимых изменений, вряд ли удастся отделаться простым набором патчей. Скорее всего результат будет виден только после определённых изменений.
Хотя не исключено, что выложу код сюда или сюда. А пока что просто с ним знакомлюсь.
UPD: Залил проект на gitorious. Впрочем, пока существенно почти ничего не изменил. Распутываю классы нот и нотных эффектов.
Комментариев нет:
Отправить комментарий